[Firestore] CircleCIを利用したFirestoreの定期バックアップ


CircleCIのスケジュール実行を利用したFirestoreの定期バックアップ

Firebaseの「データのエクスポートのスケジュールを設定する」をぱっと見て面倒くさそうとなったので、CircleCIのcron使ってFirestoreのバックアップを取ることにしました。

下記の環境変数とgcloud beta firestore --quiet export gs://firestore-backupのgs://以降を変更すれば同じように動かせると思います。

version: 2.1
jobs: 
  backup-database:
    docker:
      - image: google/cloud-sdk
    steps:
      - checkout

      - run:
          name: setup gcloud
          command: |
            echo $PRODUCTION_GCLOUD_SERVICE_KEY | gcloud auth activate-service-account --key-file=-
            gcloud --quiet config set project ${PRODUCTION_GOOGLE_PROJECT_ID}
            gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE} 

      - run:
          name: backup production database
          command: gcloud beta firestore --quiet export gs://firestore-backup

workflows:
  version: 2
  nightly:
    triggers:
      - schedule:
          cron: '0 15 * * *'
          filters:
            branches:
              only: master
    jobs:
      - backup-database