From 776a5d2d23e082100ccc779b75298b02b8f2e6bd Mon Sep 17 00:00:00 2001 From: Baptiste Augrain Date: Mon, 14 Apr 2025 22:14:39 +0200 Subject: [PATCH] feat: clean page deployments --- .github/workflows/build.yml | 10 +++++----- README.md | 1 + scripts/deploy.sh | 31 +++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 5 deletions(-) create mode 100755 scripts/deploy.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3f1e27a..cac4d9c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,6 +8,7 @@ on: env: GH_REPOSITORIES: VSCodium/vscodium VSCodium/vscodium-insiders PACKAGE_NAME: codium + PAGE_NAME: vscodium-repo PROJECT_NAME: VSCodium PROJECT_URL: https://github.com/VSCodium/vscodium R2_BUCKET_NAME: vscodium-repo @@ -86,11 +87,10 @@ jobs: retention-days: 1 - name: Deploy site - uses: cloudflare/wrangler-action@v3 - with: - apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} - accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - command: pages deploy _site --project-name=vscodium-repo + env: + CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} + CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + run: ./scripts/deploy.sh - name: Clean packages env: diff --git a/README.md b/README.md index c253711..86f5975 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ This project can be forked and reconfigured to generate repositories from any pa - `GH_REPOSITORIES` (`VSCodium/vscodium VSCodium/vscodium-insiders`) - `PACKAGE_NAME` (`codium`) +- `PAGE_NAME` (`vscodium-repo`) - `PROJECT_NAME` (`VSCodium`) - `PROJECT_URL` (`https://github.com/VSCodium/vscodium`) - `R2_BUCKET_NAME` (`vscodium-repo`) diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100755 index 0000000..9c44700 --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -e + +npx wrangler pages deploy _site --project-name="${PAGE_NAME}" + +DEPLOYMENTS=$( npx wrangler pages deployment list "${PAGE_NAME}" --json ) +readarray -t DEPLOYMENTS_TO_DELETE < <( echo "${DEPLOYMENTS}" | jq -r '.result | sort_by(.created_on) | reverse | .[3:] | .[].id' ) + +echo "Found ${#DEPLOYMENTS_TO_DELETE[@]} deployments to delete" + +for DEPLOYMENT_ID in "${DEPLOYMENTS_TO_DELETE[@]}"; do + if [ -n "${DEPLOYMENT_ID}" ]; then + echo "Deleting deployment: ${DEPLOYMENT_ID}" + + RESPONSE=$( curl -X DELETE \ + -H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \ + "https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/pages/projects/${PAGE_NAME}/deployments/${DEPLOYMENT_ID}" ) + + # Check if deletion was successful + if echo "${RESPONSE}" | jq -e '.success' >/dev/null; then + echo "Successfully deleted deployment: ${DEPLOYMENT_ID}" + else + echo "Failed to delete deployment: ${DEPLOYMENT_ID}" + ERROR_MESSAGE=$(echo "${RESPONSE}" | jq -r '.errors[].message') + echo "Error: ${ERROR_MESSAGE}" + exit 1 + fi + fi +done +