-
Notifications
You must be signed in to change notification settings - Fork 11
56 lines (46 loc) · 2.2 KB
/
remove-preview-apps.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
name: Delete Cloudflare Pages Preview Deployment
on:
pull_request:
types: [closed]
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: Delete Cloudflare Pages preview deployments
run: |
deployment_ids=$(
ACCOUNT_ID=${{ secrets.CF_ACCOUNT_ID }} \
AUTH_TOKEN=${{ secrets.CLOUDFLARE_API_TOKEN }} \
PROJECT=${{ github.event.repository.name }} \
DEPLOY_BRANCH="${{ steps.get-branch.outputs.branch }}" \
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
'
)
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