Skip to content

backup

backup #26

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: self-hosted
environment: production
steps:
- name: Checkout code
uses: actions/checkout@v4
- 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 }}:$( printf %s '${{ env.DB_PASSWORD }}'| jq -sRr @uri)@${{ env.DB_HOST_PUBLIC }}:5432/beep?sslmode=require | gzip > ${{ env.file_name }}
env:
DB_USER: ${{ secrets.DB_USER }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
DB_HOST_PUBLIC: ${{ secrets.DB_HOST_PUBLIC }}
- name: Upload backup
run: s3cmd put --access_key=${{ env.S3_BACKUPS_ACCESS_KEY }} --secret_key=${{ env.S3_BACKUPS_SECRET_KEY }} --host=https://us-lax-1.linodeobjects.com --host-bucket="%(bucket).us-lax-1.linodeobjects.com" ${{ env.file_name }} s3://beep-backups/
env:
S3_BACKUPS_ACCESS_KEY: ${{ secrets.S3_BACKUPS_ACCESS_KEY }}
S3_BACKUPS_SECRET_KEY: ${{ secrets.S3_BACKUPS_SECRET_KEY }}