Skip to content

💾 Backup

💾 Backup #27

Workflow file for this run

name: 💾 Backup
on:
schedule:
- cron: "39 14 * * *"
workflow_dispatch:
permissions:
actions: write
contents: read
id-token: write
jobs:
backup:
name: ⎔ Backup
runs-on: ubuntu-latest
steps:
- name: ⬇️ Checkout repo
uses: actions/checkout@v4
- name: 📥 Install Postgres
run: |
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
sudo apt update
sudo apt install postgresql-17 postgresql-client-17
- name: 🕓 Set Timestamp
run: echo "TIMESTAMP=$(date -u +'%Y-%m-%d-%H-%M-%S')" >> $GITHUB_ENV
- name: ✨ Create backup
run: |
/usr/lib/postgresql/17/bin/pg_dump ${{ secrets.DATABASE_URL }} | gzip > "tv-tracker-${TIMESTAMP}.sql.gz"
cat tv-tracker-${TIMESTAMP}.sql.gz | gpg --passphrase "${{ secrets.ENCRYPTION_STRING }}" --batch --yes -c -o tv-tracker-${TIMESTAMP}.sql.gz.gpg
rm tv-tracker-${TIMESTAMP}.sql.gz
- name: ⌨️ Configure AWS credentials from Action OIDC
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: eu-central-1
role-to-assume: arn:aws:iam::143576928876:role/mk-s3-cloud-backup-tv-tracker-github-role
role-session-name: GitHubActionSession
- name: 🆙 Upload backup to S3
run: |
aws s3 cp "tv-tracker-${TIMESTAMP}.sql.gz.gpg" s3://mk-cloud-backups/databases/tv-tracker/