41 lines
1.6 KiB
YAML
41 lines
1.6 KiB
YAML
name: Cleanup Old Deployments
|
|
|
|
on:
|
|
workflow_run:
|
|
workflows: ["Deploy to Cloudflare Pages"]
|
|
types:
|
|
- completed
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
KEEP_DEPLOYMENTS: 5 # 保持するデプロイメント数
|
|
|
|
jobs:
|
|
cleanup:
|
|
runs-on: ubuntu-latest
|
|
if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }}
|
|
|
|
steps:
|
|
- name: Cleanup old deployments
|
|
run: |
|
|
# Get all deployments
|
|
DEPLOYMENTS=$(curl -s -X GET \
|
|
"https://api.cloudflare.com/client/v4/accounts/${{ secrets.CLOUDFLARE_ACCOUNT_ID }}/pages/projects/${{ secrets.CLOUDFLARE_PROJECT_NAME }}/deployments" \
|
|
-H "Authorization: Bearer ${{ secrets.CLOUDFLARE_API_TOKEN }}" \
|
|
-H "Content-Type: application/json")
|
|
|
|
# Extract deployment IDs (skip the latest N deployments)
|
|
DEPLOYMENT_IDS=$(echo "$DEPLOYMENTS" | jq -r ".result | sort_by(.created_on) | reverse | .[${{ env.KEEP_DEPLOYMENTS }}:] | .[].id")
|
|
|
|
# Delete old deployments
|
|
for ID in $DEPLOYMENT_IDS; do
|
|
echo "Deleting deployment: $ID"
|
|
curl -s -X DELETE \
|
|
"https://api.cloudflare.com/client/v4/accounts/${{ secrets.CLOUDFLARE_ACCOUNT_ID }}/pages/projects/${{ secrets.CLOUDFLARE_PROJECT_NAME }}/deployments/$ID" \
|
|
-H "Authorization: Bearer ${{ secrets.CLOUDFLARE_API_TOKEN }}" \
|
|
-H "Content-Type: application/json"
|
|
echo "Deleted deployment: $ID"
|
|
sleep 1 # Rate limiting
|
|
done
|
|
|
|
echo "Cleanup completed!" |