Skip to content

Commit 7d86d4c

Browse files
authored
Purge CDN selectively (#2932)
1 parent ee7481b commit 7d86d4c

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

.github/workflows/purge-cache.yml

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,27 @@ permissions: {}
1818
jobs:
1919
purge:
2020
runs-on: ubuntu-latest
21-
env:
22-
KEY: ${{ inputs.target || 'pydotorg-app' }}
2321
steps:
24-
- name: Purge ${{ env.KEY }}
22+
- uses: actions/checkout@v6
23+
if: github.event_name == 'push'
24+
with:
25+
fetch-depth: 0
26+
27+
- name: Resolve keys
28+
id: keys
29+
run: |
30+
if [ -n "${{ inputs.target }}" ]; then
31+
echo "keys=${{ inputs.target }}" >> "$GITHUB_OUTPUT"
32+
elif git diff --name-only ${{ github.event.before }}..${{ github.sha }} | grep -qE '^(static/|templates/)'; then
33+
echo "keys=pydotorg-app" >> "$GITHUB_OUTPUT"
34+
else
35+
echo "keys=$(git diff --name-only ${{ github.event.before }}..${{ github.sha }} | grep -oP '^apps/\K[^/]+(?=/(templates|static)/)' | sort -u | tr '\n' ' ')" >> "$GITHUB_OUTPUT"
36+
fi
37+
38+
- name: Purge ${{ steps.keys.outputs.keys || 'pydotorg-app' }}
2539
run: |
26-
curl -fsS -X POST \
27-
"https://api.fastly.com/service/${{ secrets.FASTLY_SERVICE_ID }}/purge/${{ env.KEY }}" \
28-
-H "Fastly-Key: ${{ secrets.FASTLY_API_KEY }}"
40+
for KEY in ${{ steps.keys.outputs.keys || 'pydotorg-app' }}; do
41+
curl -fsS -X POST \
42+
"https://api.fastly.com/service/${{ secrets.FASTLY_SERVICE_ID }}/purge/$KEY" \
43+
-H "Fastly-Key: ${{ secrets.FASTLY_API_KEY }}"
44+
done

0 commit comments

Comments
 (0)