Add R2 image storage, upload endpoint, and CDN support
All checks were successful
ci/woodpecker/push/deploy Pipeline was successful

- Backend: R2StorageService, upload controller (POST /api/upload)
- Frontend: CDN url helper, NEXT_PUBLIC_CDN_URL build arg
- Deploy: pass R2 secrets from Woodpecker CI to containers via .env
- Docs: update CLAUDE.md with CDN and upload conventions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-10 02:34:27 +02:00
parent a30fe60414
commit f0f769c5e8
17 changed files with 407 additions and 4 deletions

View File

@@ -7,13 +7,30 @@ steps:
image: appleboy/drone-ssh
when:
branch: main
environment:
R2_ACCOUNT_ID:
from_secret: r2_account_id
R2_ACCESS_KEY_ID:
from_secret: r2_access_key_id
R2_SECRET_ACCESS_KEY:
from_secret: r2_secret_access_key
settings:
host: 31.131.18.254
username: deploy
key:
from_secret: ssh_key
envs:
- R2_ACCOUNT_ID
- R2_ACCESS_KEY_ID
- R2_SECRET_ACCESS_KEY
script:
- cd /srv/apps/gb-site && git pull origin main
- |
cat > /srv/apps/gb-site/deploy/.env << EOF
R2_ACCOUNT_ID=$R2_ACCOUNT_ID
R2_ACCESS_KEY_ID=$R2_ACCESS_KEY_ID
R2_SECRET_ACCESS_KEY=$R2_SECRET_ACCESS_KEY
EOF
- cd /srv/apps/gb-site/deploy && docker compose -f docker-compose.prod.yml build --no-cache
- cd /srv/apps/gb-site/deploy && docker compose -f docker-compose.prod.yml up -d
@@ -21,12 +38,29 @@ steps:
image: appleboy/drone-ssh
when:
branch: dev
environment:
R2_ACCOUNT_ID:
from_secret: r2_account_id
R2_ACCESS_KEY_ID:
from_secret: r2_access_key_id
R2_SECRET_ACCESS_KEY:
from_secret: r2_secret_access_key
settings:
host: 31.131.18.254
username: deploy
key:
from_secret: ssh_key
envs:
- R2_ACCOUNT_ID
- R2_ACCESS_KEY_ID
- R2_SECRET_ACCESS_KEY
script:
- cd /srv/apps/gb-site && git pull origin dev
- cd /srv/apps/gb-site/deploy && docker compose -f docker-compose.dev.yml build --no-cache
- cd /srv/apps/gb-site/deploy && docker compose -f docker-compose.dev.yml up -d
- cd /srv/apps/gb-site-dev && git pull origin dev
- |
cat > /srv/apps/gb-site-dev/deploy/.env << EOF
R2_ACCOUNT_ID=$R2_ACCOUNT_ID
R2_ACCESS_KEY_ID=$R2_ACCESS_KEY_ID
R2_SECRET_ACCESS_KEY=$R2_SECRET_ACCESS_KEY
EOF
- cd /srv/apps/gb-site-dev/deploy && docker compose -f docker-compose.dev.yml build --no-cache
- cd /srv/apps/gb-site-dev/deploy && docker compose -f docker-compose.dev.yml up -d