diff --git a/.github/workflows/purge-cache.yml b/.github/workflows/purge-cache.yml index 91f8b101e..f7f85c2d4 100644 --- a/.github/workflows/purge-cache.yml +++ b/.github/workflows/purge-cache.yml @@ -18,11 +18,27 @@ permissions: {} jobs: purge: runs-on: ubuntu-latest - env: - KEY: ${{ inputs.target || 'pydotorg-app' }} steps: - - name: Purge ${{ env.KEY }} + - uses: actions/checkout@v6 + if: github.event_name == 'push' + with: + fetch-depth: 0 + + - name: Resolve keys + id: keys + run: | + if [ -n "${{ inputs.target }}" ]; then + echo "keys=${{ inputs.target }}" >> "$GITHUB_OUTPUT" + elif git diff --name-only ${{ github.event.before }}..${{ github.sha }} | grep -qE '^(static/|templates/)'; then + echo "keys=pydotorg-app" >> "$GITHUB_OUTPUT" + else + echo "keys=$(git diff --name-only ${{ github.event.before }}..${{ github.sha }} | grep -oP '^apps/\K[^/]+(?=/(templates|static)/)' | sort -u | tr '\n' ' ')" >> "$GITHUB_OUTPUT" + fi + + - name: Purge ${{ steps.keys.outputs.keys || 'pydotorg-app' }} run: | - curl -fsS -X POST \ - "https://api.fastly.com/service/${{ secrets.FASTLY_SERVICE_ID }}/purge/${{ env.KEY }}" \ - -H "Fastly-Key: ${{ secrets.FASTLY_API_KEY }}" + for KEY in ${{ steps.keys.outputs.keys || 'pydotorg-app' }}; do + curl -fsS -X POST \ + "https://api.fastly.com/service/${{ secrets.FASTLY_SERVICE_ID }}/purge/$KEY" \ + -H "Fastly-Key: ${{ secrets.FASTLY_API_KEY }}" + done