Skip to content

Instantly share code, notes, and snippets.

@DennisAlund
Last active April 26, 2020 03:35
Show Gist options
  • Save DennisAlund/b482824f7b199a4c1e9044b958ec88a8 to your computer and use it in GitHub Desktop.
Save DennisAlund/b482824f7b199a4c1e9044b958ec88a8 to your computer and use it in GitHub Desktop.
name: Snapshot backup
env:
BACKUP_BUCKET: "gs://example-prod-backups"
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
on:
schedule:
# At some schedule when your app is least active
- cron: "0 3 * * *"
jobs:
backup-firestore:
runs-on: ubuntu-latest
steps:
- name: Setup gcloud environment
uses: GoogleCloudPlatform/github-actions@0.1.2
with:
project_id: example-prod
service_account_key: ${{ secrets.GCLOUD_AUTH_KEY_PROD }}
- name: Select project
run: gcloud config set project example-prod
- name: Remove previous nightly backup
run: gsutil rm -rf ${{ env.BACKUP_BUCKET }}/firestore/snapshot
- name: Export Firestore to Cloud Storage bucket
run: gcloud firestore export ${{ env.BACKUP_BUCKET }}/firestore/snapshot --async
backup-rtdb:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup gcloud environment
uses: GoogleCloudPlatform/github-actions@0.1.2
with:
project_id: example-prod
service_account_key: ${{ secrets.GCLOUD_AUTH_KEY_PROD }}
- name: Select project
run: gcloud config set project example-prod
- name: Select Firebase project
uses: w9jds/firebase-action@v1.3.0
with:
args: use production
- name: Download RTDB data
uses: w9jds/firebase-action@v1.3.0
with:
args: database:get --output snapshot.json /
- name: Remove previous nightly backup
run: gsutil rm -f ${{ env.BACKUP_BUCKET }}/rtdb/snapshot.json
- name: Upload to Cloud Storage Bucket
run: gsutil cp snapshot.json ${{ env.BACKUP_BUCKET }}/rtdb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment