name: Promote ISOs to Production
on:
workflow_dispatch:
inputs:
dry_run:
description: 'Run in dry-run mode (preview changes without copying)'
required: false
type: boolean
default: true
jobs:
promote:
name: Promote ISOs from Test to Production
runs-on: ubuntu-latest
permissions:
contents: read
env:
RCLONE_CONFIG_R2_TEST_TYPE: s3
RCLONE_CONFIG_R2_TEST_PROVIDER: Cloudflare
RCLONE_CONFIG_R2_TEST_ACCESS_KEY_ID: ${{ secrets.AURORA_DL_TEST_R2_ACCESS_KEY_ID }}
RCLONE_CONFIG_R2_TEST_SECRET_ACCESS_KEY: ${{ secrets.AURORA_DL_TEST_R2_ACCESS_KEY_SECRET }}
RCLONE_CONFIG_R2_TEST_REGION: auto
RCLONE_CONFIG_R2_TEST_ENDPOINT: ${{ secrets.AURORA_DL_TEST_R2_ENDPOINT }}
RCLONE_CONFIG_R2_PROD_TYPE: s3
RCLONE_CONFIG_R2_PROD_PROVIDER: Cloudflare
RCLONE_CONFIG_R2_PROD_ACCESS_KEY_ID: ${{ secrets.AURORA_DL_R2_ACCESS_KEY_ID }}
RCLONE_CONFIG_R2_PROD_SECRET_ACCESS_KEY: ${{ secrets.AURORA_DL_R2_ACCESS_SECRET_KEY }}
RCLONE_CONFIG_R2_PROD_REGION: auto
RCLONE_CONFIG_R2_PROD_ENDPOINT: ${{ secrets.AURORA_DL_R2_ENDPOINT }}
steps:
- name: Install rclone
run: /home/linuxbrew/.linuxbrew/bin/brew install rclone
- name: List files in Test bucket
run: |
echo "Files in Test bucket (including testing - testing ISOs will NOT be promoted):"
/home/linuxbrew/.linuxbrew/bin/rclone ls R2_TEST:aurora-dl-test \
--filter "+ *.iso" \
--filter "+ *.iso-CHECKSUM" \
--filter "- *"
echo "::notice::Testing ISOs (*-testing-*) are listed above but will be excluded from promotion."
- name: Promote ISOs (Dry Run)
if: inputs.dry_run == true
run: |
echo "Running in DRY RUN mode - no files will be copied"
/home/linuxbrew/.linuxbrew/bin/rclone sync R2_TEST:aurora-dl-test R2_PROD:aurora-dl \
--filter "- *-testing-*" \
--filter "- *-webui-*" \
--filter "+ *.iso" \
--filter "+ *.iso-CHECKSUM" \
--filter "- *" \
--dry-run \
--verbose
- name: Promote ISOs (Production)
if: inputs.dry_run == false
run: |
echo "Promoting ISOs from Test to Production"
/home/linuxbrew/.linuxbrew/bin/rclone sync R2_TEST:aurora-dl-test R2_PROD:aurora-dl \
--filter "- *-testing-*" \
--filter "- *-webui-*" \
--filter "+ *.iso" \
--filter "+ *.iso-CHECKSUM" \
--filter "- *" \
--verbose \
--progress
- name: Verify promotion
if: inputs.dry_run == false
run: |
echo "Files in Production bucket after promotion:"
/home/linuxbrew/.linuxbrew/bin/rclone ls R2_PROD:aurora-dl \
--filter "+ *.iso" \
--filter "+ *.iso-CHECKSUM" \
--filter "- *"