diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index ba0523a..15413cd 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -15,6 +15,11 @@ jobs: - name: Build config run: | npm run build -- pr-${{ github.event.number }} + - name: Upload to CloudFlare CDN + env: + CLOUDFLARE_BUCKET_PASSWORD: ${{ secrets.CLOUDFLARE_BUCKET_PASSWORD }} + CDN_BUCKET_DESTINATION: installer/config + run: ./scripts/cdn-cf.sh ./dist $CDN_BUCKET_DESTINATION - name: Upload to Bunny CDN env: BUNNY_BUCKET_PASSWORD: ${{ secrets.BUNNY_BUCKET_PASSWORD }} diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml index b1d052d..6516e60 100644 --- a/.github/workflows/production.yml +++ b/.github/workflows/production.yml @@ -18,6 +18,11 @@ jobs: - name: Build config run: | npm run build -- production + - name: Upload to CloudFlare CDN + env: + CLOUDFLARE_BUCKET_PASSWORD: ${{ secrets.CLOUDFLARE_BUCKET_PASSWORD }} + CDN_BUCKET_DESTINATION: installer/config + run: ./scripts/cdn-cf.sh ./dist $CDN_BUCKET_DESTINATION - name: Upload to Bunny CDN env: BUNNY_BUCKET_PASSWORD: ${{ secrets.BUNNY_BUCKET_PASSWORD }} diff --git a/.github/workflows/staging.yml b/.github/workflows/staging.yml index 7fb048b..50fbc32 100644 --- a/.github/workflows/staging.yml +++ b/.github/workflows/staging.yml @@ -18,6 +18,11 @@ jobs: - name: Build config run: | npm run build -- staging + - name: Upload to CloudFlare CDN + env: + CLOUDFLARE_BUCKET_PASSWORD: ${{ secrets.CLOUDFLARE_BUCKET_PASSWORD }} + CDN_BUCKET_DESTINATION: installer/config + run: ./scripts/cdn-cf.sh ./dist $CDN_BUCKET_DESTINATION - name: Upload to Bunny CDN env: BUNNY_BUCKET_PASSWORD: ${{ secrets.BUNNY_BUCKET_PASSWORD }} diff --git a/scripts/cdn-cf.sh b/scripts/cdn-cf.sh new file mode 100755 index 0000000..4b6721f --- /dev/null +++ b/scripts/cdn-cf.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +CDN_URL="flybywirecdn.com" +CDN_PURGE_LINK="https://flybywirecdn.com/purgeCache?url=http://flybywirecdn.com" +FILES=${1} +CDN_DIR=${2:-"installer/config/test"} + +echo "Syncing files from: ${FILES}/*" +echo "Syncing to: ${CDN_DIR}" + +for FILE in "${FILES}"/*; do + DEST="$CDN_URL/$CDN_DIR/$(basename -- "$FILE")" + echo "Syncing file: $FILE" + echo "Destination: $DEST" + curl -X PUT -H "X-FBW-Access-Key: $CLOUDFLARE_BUCKET_PASSWORD" -T "$FILE" "$DEST" +done + +# Purge after all uploads that the files are somewhat in sync +echo "Purging cache" +for FILE in "${FILES}"/*; do + DEST="$CDN_PURGE_LINK/$CDN_DIR/$(basename -- "$FILE")" + echo "Purging cache for file: $FILE" + echo "Purge URL: $DEST" + curl -X POST -H "X-FBW-Access-Key: $CLOUDFLARE_BUCKET_PASSWORD" -H "Content-Length: 0" "$DEST" +done