diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b9e916af8..6e119dc15 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -172,7 +172,7 @@ jobs: exit 0 fi - echo -n "${{ needs.setup-environment.outputs.deploy_dir }}" | aws s3 cp - s3://${{ secrets.AWS_S3_BUCKET }}/latest_version --endpoint ${{ secrets.AWS_ENDPOINT }} --content-type "text/plain" + echo -n "${{ needs.setup-environment.outputs.deploy_dir }}" | aws s3 cp - s3://${{ secrets.AWS_S3_BUCKET }}/latest_version --endpoint ${{ secrets.AWS_ENDPOINT }} --content-type "text/plain" --cache-control "no-cache" env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} @@ -181,11 +181,32 @@ jobs: - name: Purge Cloudflare cache if: env.HAS_CLOUDFLARE_SECRETS == 'true' run: | + latest_version_url="" + if [ "${{ github.ref_type }}" = "tag" ]; then + latest_version_url="${{ inputs.base_url }}/latest_version" + fi + + purge_payload="$( + jq -cn \ + --arg public_url "${{ needs.setup-environment.outputs.public_url }}" \ + --arg html_renderer_url "${{ needs.setup-environment.outputs.html_renderer_url }}" \ + --arg latest_version_url "$latest_version_url" \ + '[($public_url + "/"), ($html_renderer_url + "/"), $latest_version_url] + | map(select(length > 0)) + | map(sub("^https?://"; "")) + | map(gsub("/+"; "/")) + | unique + | {prefixes: .}' + )" + + echo "Purging Cloudflare cache prefixes:" + jq -r '.prefixes[] | " - \(.)"' <<<"$purge_payload" + response="$( curl -sS --fail-with-body -X POST "https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/purge_cache" \ -H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \ -H "Content-Type: application/json" \ - --data '{"files":["${{ needs.setup-environment.outputs.public_url }}/web-component.html", "${{ needs.setup-environment.outputs.public_url }}/web-component.js", "${{ needs.setup-environment.outputs.public_url }}/scratch.html", "${{ needs.setup-environment.outputs.public_url }}/scratch.js", "${{ inputs.base_url }}/latest_version", "${{ needs.setup-environment.outputs.html_renderer_url}}/html-renderer.html", "${{ needs.setup-environment.outputs.html_renderer_url}}/html-renderer.js"]}' + --data "$purge_payload" )" || { echo "Cloudflare purge request failed:" echo "$response"