From f66295f07bf6997578216f9e8fe2d5279d7d07b6 Mon Sep 17 00:00:00 2001 From: Christian Vidal Wolf Date: Fri, 15 May 2026 08:10:39 +0200 Subject: [PATCH] feat: schedule 6h backup via GitHub Actions instead of Vercel cron --- .github/workflows/backup.yml | 29 +++++++++++++++++++++++++++++ vercel.json | 3 --- 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/backup.yml diff --git a/.github/workflows/backup.yml b/.github/workflows/backup.yml new file mode 100644 index 0000000..5f62aa4 --- /dev/null +++ b/.github/workflows/backup.yml @@ -0,0 +1,29 @@ +name: Supabase Backup to Dropbox + +on: + schedule: + - cron: '0 0,6,12,18 * * *' # every 6h at 00:00, 06:00, 12:00, 18:00 UTC + workflow_dispatch: # allow manual trigger from GitHub UI + +jobs: + backup: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Trigger backup endpoint + run: | + RESPONSE=$(curl -s -w "\n%{http_code}" \ + -X GET \ + -H "Authorization: Bearer ${{ secrets.BACKUP_SECRET }}" \ + https://craze-data-check.vercel.app/api/backup) + + HTTP_STATUS=$(echo "$RESPONSE" | tail -n1) + BODY=$(echo "$RESPONSE" | head -n-1) + + echo "Status: $HTTP_STATUS" + echo "Response: $BODY" + + if [ "$HTTP_STATUS" != "200" ]; then + echo "Backup failed with status $HTTP_STATUS" + exit 1 + fi diff --git a/vercel.json b/vercel.json index 221d9d4..c43e1c6 100644 --- a/vercel.json +++ b/vercel.json @@ -6,9 +6,6 @@ { "source": "/api/bc-export", "destination": "api/bc-export.js" }, { "source": "/api/backup", "destination": "api/backup.js" } ], - "crons": [ - { "path": "/api/backup", "schedule": "0 0,6,12,18 * * *" } - ], "headers": [ { "source": "/(.*)",