Skip to content

Commit 2ef7dec

Browse files
ci: fix cloudflare purge (#60)
* ci: fix cloudflare purge * fix: add secrets to workflow * refactor: rename zone id variable
1 parent 80c008f commit 2ef7dec

File tree

4 files changed

+47
-5
lines changed

4 files changed

+47
-5
lines changed

.github/workflows/pr.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ jobs:
1818
- name: Upload to CloudFlare CDN
1919
env:
2020
CLOUDFLARE_BUCKET_PASSWORD: ${{ secrets.CLOUDFLARE_BUCKET_PASSWORD }}
21+
CLOUDFLARE_PURGE_TOKEN: ${{ secrets.CLOUDFLARE_PURGE_TOKEN }}
22+
CLOUDFLARE_CDN_ZONE_ID: ${{ secrets.CLOUDFLARE_CDN_ZONE_ID }}
2123
CDN_BUCKET_DESTINATION: installer/config
2224
run: ./scripts/cdn-cf.sh ./dist $CDN_BUCKET_DESTINATION
2325
- name: Upload to Bunny CDN

.github/workflows/production.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ jobs:
2121
- name: Upload to CloudFlare CDN
2222
env:
2323
CLOUDFLARE_BUCKET_PASSWORD: ${{ secrets.CLOUDFLARE_BUCKET_PASSWORD }}
24+
CLOUDFLARE_PURGE_TOKEN: ${{ secrets.CLOUDFLARE_PURGE_TOKEN }}
25+
CLOUDFLARE_CDN_ZONE_ID: ${{ secrets.CLOUDFLARE_CDN_ZONE_ID }}
2426
CDN_BUCKET_DESTINATION: installer/config
2527
run: ./scripts/cdn-cf.sh ./dist $CDN_BUCKET_DESTINATION
2628
- name: Upload to Bunny CDN

.github/workflows/staging.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ jobs:
2121
- name: Upload to CloudFlare CDN
2222
env:
2323
CLOUDFLARE_BUCKET_PASSWORD: ${{ secrets.CLOUDFLARE_BUCKET_PASSWORD }}
24+
CLOUDFLARE_PURGE_TOKEN: ${{ secrets.CLOUDFLARE_PURGE_TOKEN }}
25+
CLOUDFLARE_CDN_ZONE_ID: ${{ secrets.CLOUDFLARE_CDN_ZONE_ID }}
2426
CDN_BUCKET_DESTINATION: installer/config
2527
run: ./scripts/cdn-cf.sh ./dist $CDN_BUCKET_DESTINATION
2628
- name: Upload to Bunny CDN

scripts/cdn-cf.sh

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#!/bin/bash
22

33
CDN_URL="flybywirecdn.com"
4-
CDN_PURGE_LINK="https://flybywirecdn.com/purgeCache?url=http://flybywirecdn.com"
54
FILES=${1}
65
CDN_DIR=${2:-"installer/config/test"}
76

@@ -17,9 +16,46 @@ done
1716

1817
# Purge after all uploads that the files are somewhat in sync
1918
echo "Purging cache"
19+
20+
# Check if required environment variables are set
21+
if [ -z "$CLOUDFLARE_CDN_ZONE_ID" ]; then
22+
echo "Error: CLOUDFLARE_CDN_ZONE_ID environment variable is not set"
23+
exit 1
24+
fi
25+
26+
if [ -z "$CLOUDFLARE_PURGE_TOKEN" ]; then
27+
echo "Error: CLOUDFLARE_PURGE_TOKEN environment variable is not set"
28+
exit 1
29+
fi
30+
31+
# Build array of URLs to purge
32+
PURGE_URLS=()
2033
for FILE in "${FILES}"/*; do
21-
DEST="$CDN_PURGE_LINK/$CDN_DIR/$(basename -- "$FILE")"
22-
echo "Purging cache for file: $FILE"
23-
echo "Purge URL: $DEST"
24-
curl -X POST -H "X-FBW-Access-Key: $CLOUDFLARE_BUCKET_PASSWORD" -H "Content-Length: 0" "$DEST"
34+
FILE_URL="https://$CDN_URL/$CDN_DIR/$(basename -- "$FILE")"
35+
PURGE_URLS+=("$FILE_URL")
36+
echo "Will purge: $FILE_URL"
2537
done
38+
39+
# Create JSON payload for Cloudflare API
40+
PURGE_JSON=$(printf '{"files":["%s"]}' "$(IFS='","'; echo "${PURGE_URLS[*]}")")
41+
42+
echo "Purging cache via Cloudflare API"
43+
echo "JSON payload: $PURGE_JSON"
44+
45+
# Call Cloudflare API to purge cache
46+
PURGE_RESPONSE=$(curl -s -X POST \
47+
-H "Authorization: Bearer $CLOUDFLARE_PURGE_TOKEN" \
48+
-H "Content-Type: application/json" \
49+
-d "$PURGE_JSON" \
50+
"https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_CDN_ZONE_ID/purge_cache")
51+
52+
echo "Purge response: $PURGE_RESPONSE"
53+
54+
# Check if purge was successful
55+
if echo "$PURGE_RESPONSE" | grep -q '"success":true'; then
56+
echo "Cache purge successful"
57+
else
58+
echo "Cache purge failed"
59+
echo "Response: $PURGE_RESPONSE"
60+
exit 1
61+
fi

0 commit comments

Comments
 (0)