Scrum4Me/.github/workflows/neon-backup.yml

41 lines
1.3 KiB
YAML

name: Daily Neon Database Backup
on:
schedule:
- cron: "0 2 * * *"
workflow_dispatch:
jobs:
backup:
runs-on: ubuntu-latest
steps:
- name: Install PostgreSQL 17 client
run: |
sudo apt-get update
sudo apt-get install -y curl ca-certificates gnupg
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /usr/share/keyrings/postgresql.gpg
echo "deb [signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt noble-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
sudo apt-get update
sudo apt-get install -y postgresql-client-17
pg_dump --version
- name: Create backup
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
run: |
mkdir -p backups
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
/usr/lib/postgresql/17/bin/pg_dump "$DATABASE_URL" \
--format=custom \
--no-owner \
--no-privileges \
--file="backups/neon-backup-$DATE.dump"
- name: Upload backup artifact
uses: actions/upload-artifact@v4
with:
name: neon-database-backup
path: backups/*.dump
retention-days: 30