Firebase Hosting や Functions に CI 通じてデプロイしたくなったので、GCP の Cloud Build を使って設定をしてみます。公式ドキュメントや他の方が試された記事だと FIREBASE_TOKEN
が必要と書いてありますが、実は GCP の Google Application Default Credentials でトークン設定なしにデプロイが可能です。
教えていただいた @iwata@github さん感謝。
なお Cloud Build を有効にすると、自動的に Firebase のプランが Spark (無料) から Blaze になるので注意してください。
Firebase コンテナの用意
まず firebase コマンドを実行可能なコンテナを用意します。
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
cd cloud-builders-community/firebase
gcloud builds submit --project <project name> --config cloudbuild.yaml .
Cloud Build 設定ファイル
Firebase にデプロイするアプリケーションの Cloud Build 設定をします。今回の例は next.js のアプリケーションなので最初に node npm 関係のビルドをしています。重要なのは一番最後のステップです。ここで Firebase へデプロイをします。 FIREBASE_TOKEN
の指定は必要ありません。
steps:
- id: 'Install npm packages'
name: 'node:12.9-buster'
args: ['npm', 'install']
- id: 'Build App'
name: 'node:12.9-buster'
args: ['npm', 'run', 'build-app']
- id: "Deploy to Firebase"
name: 'gcr.io/$PROJECT_ID/firebase'
args: ['deploy']
Cloud Build ADC 設定
Cloud Build から Firebase Hosting / Functions へデプロイするために権限を付与します。コンソール画面から設定します。
デプロイ
あとはデプロイできるか試してみます。
gcloud builds submit --project <project name> --config cloudbuild.yaml .
正常にデプロイされたらトリガーを設定して終了です。簡単になりましたね。
(… functions を個別にデプロイさせるにはトリガーを細かく作りわけないと駄目なのがちょっと面倒くさいけど)