Skip to content

backup

backup #630

Workflow file for this run

name: backup
on:
schedule:
- cron: "0 10 * * *" # Run at 10:00am UTC every day (6:00am EST)
workflow_dispatch: # Allows manual triggering from GitHub UI
jobs:
backup-and-upload:
runs-on: ubuntu-latest
environment: production
steps:
- uses: tailscale/github-action@v4
with:
authkey: ${{ secrets.TS_AUTHKEY }}
- name: Checkout code
uses: actions/checkout@v6
- name: Install PostgreSQL client
run: sudo apt install -y postgresql-client jq s3cmd
- name: Filename
run: |
echo "file_name=$(TZ=":America/New_York" date +'%B-%d-%Y-%I-%M-%S-%p').sql.gz" >> $GITHUB_ENV
echo "${{ env.file_name }}"
- name: Dump database
run: pg_dump postgresql://${{ env.DB_USER }}:${{ env.DB_PASSWORD }}@${{ env.DB_HOST }}:5432/beep?sslmode=require | gzip > ${{ env.file_name }}
env:
DB_USER: ${{ secrets.DB_USER }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
DB_HOST: ${{ secrets.DB_HOST }}
- name: Upload backup
run: s3cmd put --access_key=${{ env.S3_BACKUPS_ACCESS_KEY }} --secret_key=${{ env.S3_BACKUPS_SECRET_KEY }} --host=${{ env.S3_BACKUPS_ENDPOINT }} --host-bucket=${{ env.S3_BACKUPS_ENDPOINT }} ${{ env.file_name }} s3://beep-production-backups/
env:
S3_BACKUPS_ACCESS_KEY: ${{ secrets.S3_BACKUPS_ACCESS_KEY }}
S3_BACKUPS_SECRET_KEY: ${{ secrets.S3_BACKUPS_SECRET_KEY }}
S3_BACKUPS_ENDPOINT: ${{ secrets.S3_BACKUPS_ENDPOINT }}