Skip to content

Added paginated curl to get all deployments for cloudflare pages #1

Added paginated curl to get all deployments for cloudflare pages

Added paginated curl to get all deployments for cloudflare pages #1

name: Delete Cloudflare Pages Preview Deployment
on:
pull_request:
jobs:
delete-preview-deployment:
runs-on: ubuntu-latest
steps:
- name: Get branch name
id: get-branch
run: echo "branch=$(gh pr view $PR_NO --repo $REPO --json headRefName --jq '.headRefName')" >> $GITHUB_OUTPUT
env:
REPO: ${{ github.repository }}
PR_NO: ${{ github.event.pull_request.number }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Print branch name
run: echo "Branch name is ${{ steps.get-branch.outputs.branch }}"
- name: Delete Cloudflare Pages preview deployments
run: |
DEPLOY_BRANCH="${{ steps.get-branch.outputs.branch }}"
deployment_ids=$(
ACCOUNT_ID=${{ secrets.CF_ACCOUNT_ID }} \
AUTH_TOKEN=${{ secrets.CLOUDFLARE_API_TOKEN }} \
PROJECT=${{ github.event.repository.name }} \
bash -c '
PAGE=1
DEPLOYMENT_IDS=""
while true; do
response=$(curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT/deployments?page=$PAGE" \
-H "Authorization: Bearer $AUTH_TOKEN" \
-H "Content-Type: application/json")
page_ids=$(echo "$response" | jq -r --arg DEPLOY_BRANCH "$DEPLOY_BRANCH" '"'"'.result[] | select(.deployment_trigger.metadata.branch == $DEPLOY_BRANCH) | .id'"'"')
DEPLOYMENT_IDS+=" $page_ids"
count=$(echo "$response" | jq -r .result_info.count)
if [ "$count" -eq "0" ]; then
break
fi
PAGE=$((PAGE + 1))
done
echo "$DEPLOYMENT_IDS" | xargs
'
)
echo "Deployment IDs: $deployment_ids"
# for deployment_id in $deployment_ids; do
# echo "Deleting deployment $deployment_id"
# curl -s -X DELETE "https://api.cloudflare.com/client/v4/accounts/${{ secrets.CF_ACCOUNT_ID }}/pages/projects/${{ github.event.repository.name }}/deployments/$deployment_id?force=true" \
# -H "Authorization: Bearer ${{ secrets.CLOUDFLARE_API_TOKEN }}" \
# -H "Content-Type: application/json"
# done