name: Supa-backup on: pull_request: branches: [ main ] workflow_dispatch: schedule: - cron: '0 0 * * *' jobs: run_db_backup: runs-on: ubuntu-latest env: SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }} SUPABASE_PROJECT_ID: ${{ secrets.SUPABASE_PROJECT_ID }} # MinIO / S3 config AWS_ACCESS_KEY_ID: ${{ secrets.MINIO_ACCESS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.MINIO_SECRET_KEY }} AWS_DEFAULT_REGION: us-east-1 S3_ENDPOINT: ${{ secrets.MINIO_ENDPOINT }} S3_BUCKET: ${{ secrets.MINIO_BUCKET }} steps: - uses: actions/checkout@v4 with: ref: ${{ github.head_ref || github.ref }} - uses: supabase/setup-cli@v1 with: version: latest - name: Link Project run: supabase link --project-ref $SUPABASE_PROJECT_ID - name: Create backup directory run: mkdir -p backup - name: Backup roles run: supabase db dump -f backup/roles.sql --role-only - name: Backup schema run: supabase db dump -f backup/schema.sql - name: Backup data run: supabase db dump -f backup/data.sql --data-only --use-copy - name: Configure AWS CLI uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.MINIO_ACCESS_KEY }} aws-secret-access-key: ${{ secrets.MINIO_SECRET_KEY }} aws-region: us-east-1 TIMESTAMP=$(date +'%Y-%m-%d_%H-%M-%S') aws --endpoint-url $S3_ENDPOINT s3 cp backup/ s3://$S3_BUCKET/$TIMESTAMP/ --recursive