From 230e7bdf91e0c9a24f1d128c7fc905067778bace Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 26 Jul 2026 17:22:25 -0700 Subject: [PATCH] chore(build): upload release to Cloudflare R2 (#38635) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The download site’s bandwidth costs are growing rapidly, while Cloudflare R2 does not charge egress fees. Therefore, we would like to migrate the download site from S3 to R2. To ensure a smooth transition, we will keep the existing S3 upload process temporarily and remove it after the migration is complete. The upload steps are currently duplicated in three places. They could be consolidated into a composite action in a separate PR. --- .github/workflows/release-nightly.yml | 10 ++++++++++ .github/workflows/release-tag-rc.yml | 10 ++++++++++ .github/workflows/release-tag-version.yml | 10 ++++++++++ 3 files changed, 30 insertions(+) diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml index 96afd1d2b1..b89dcfbb55 100644 --- a/.github/workflows/release-nightly.yml +++ b/.github/workflows/release-nightly.yml @@ -67,6 +67,16 @@ jobs: BRANCH: ${{ steps.clean_name.outputs.branch }} run: | aws s3 sync dist/release "s3://$AWS_S3_BUCKET/gitea/$BRANCH" --no-progress + - name: upload binaries to cloudflare r2 + env: + AWS_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_R2_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_R2_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: auto + CLOUDFLARE_R2_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_R2_ACCOUNT_ID }} + CLOUDFLARE_R2_BUCKET: ${{ secrets.CLOUDFLARE_R2_BUCKET }} + BRANCH: ${{ steps.clean_name.outputs.branch }} + run: | + aws s3 sync dist/release "s3://$CLOUDFLARE_R2_BUCKET/gitea/$BRANCH" --endpoint-url "https://$CLOUDFLARE_R2_ACCOUNT_ID.r2.cloudflarestorage.com" --no-progress nightly-container: runs-on: namespace-profile-gitea-release-docker diff --git a/.github/workflows/release-tag-rc.yml b/.github/workflows/release-tag-rc.yml index c59a9a2298..68d337675f 100644 --- a/.github/workflows/release-tag-rc.yml +++ b/.github/workflows/release-tag-rc.yml @@ -68,6 +68,16 @@ jobs: BRANCH: ${{ steps.clean_name.outputs.branch }} run: | aws s3 sync dist/release "s3://$AWS_S3_BUCKET/gitea/$BRANCH" --no-progress + - name: upload binaries to cloudflare r2 + env: + AWS_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_R2_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_R2_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: auto + CLOUDFLARE_R2_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_R2_ACCOUNT_ID }} + CLOUDFLARE_R2_BUCKET: ${{ secrets.CLOUDFLARE_R2_BUCKET }} + BRANCH: ${{ steps.clean_name.outputs.branch }} + run: | + aws s3 sync dist/release "s3://$CLOUDFLARE_R2_BUCKET/gitea/$BRANCH" --endpoint-url "https://$CLOUDFLARE_R2_ACCOUNT_ID.r2.cloudflarestorage.com" --no-progress - name: Install GH CLI uses: dev-hanz-ops/install-gh-cli-action@af38ce09b1ec248aeb08eea2b16bbecea9e059f8 # v0.2.1 with: diff --git a/.github/workflows/release-tag-version.yml b/.github/workflows/release-tag-version.yml index 5fce362bc3..82cfd7454b 100644 --- a/.github/workflows/release-tag-version.yml +++ b/.github/workflows/release-tag-version.yml @@ -71,6 +71,16 @@ jobs: BRANCH: ${{ steps.clean_name.outputs.branch }} run: | aws s3 sync dist/release "s3://$AWS_S3_BUCKET/gitea/$BRANCH" --no-progress + - name: upload binaries to cloudflare r2 + env: + AWS_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_R2_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_R2_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: auto + CLOUDFLARE_R2_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_R2_ACCOUNT_ID }} + CLOUDFLARE_R2_BUCKET: ${{ secrets.CLOUDFLARE_R2_BUCKET }} + BRANCH: ${{ steps.clean_name.outputs.branch }} + run: | + aws s3 sync dist/release "s3://$CLOUDFLARE_R2_BUCKET/gitea/$BRANCH" --endpoint-url "https://$CLOUDFLARE_R2_ACCOUNT_ID.r2.cloudflarestorage.com" --no-progress - name: Install GH CLI uses: dev-hanz-ops/install-gh-cli-action@af38ce09b1ec248aeb08eea2b16bbecea9e059f8 # v0.2.1 with: