0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloud BuildでCloud Functionsのデプロイを自動化した話

0
Last updated at Posted at 2026-07-03

Firebase Cloud Functionsを利用しているプロジェクトでは、以前は各開発者のローカル環境からデプロイを行っていました。

firebase deploy --only functions

手軽な方法ではありましたが、

  • 開発者ごとに環境が異なる
  • Firebase CLIのバージョン差異
  • 誰がデプロイしたか分かりづらい
  • 認証情報を各PCで管理する必要がある

といった課題がありました。

そこで、Cloud Buildを利用してCloud Functionsのデプロイを自動化し、認証情報もSecret Managerで管理する構成へ変更しました。


導入前

以前はローカルPCから直接デプロイしていました。

GitHub

↓

ローカルPC

↓

firebase deploy

↓

Cloud Functions

開発者ごとにFirebase CLIのセットアップや認証が必要で、デプロイ方法も個人の環境に依存していました。


導入後

現在はCloud Buildからデプロイしています。

GitHub

↓

Cloud Build Trigger

↓

Cloud Build

↓

Cloud Functions

リポジトリへPushするとCloud Buildが起動し、Cloud Functionsまでデプロイします。


Secret Managerで認証情報を管理

ローカルでは

firebase login

したユーザー情報を利用していました。

現在は、認証情報をSecret Managerで管理し、Cloud Buildから取得しています。

Secret Manager

↓

Cloud Build

↓

Firebase CLI

秘密情報をリポジトリや開発者のPCへ保存する必要がなくなりました。


cloudbuild.yaml

Cloud BuildではSecret Managerから認証情報を取得しています。

availableSecrets:
  secretManager:
    - versionName: projects/$PROJECT_ID/secrets/firebase-token/versions/latest
      env: FIREBASE_TOKEN

steps:
  - name: node:20
    entrypoint: bash
    args:
      - -c
      - |
        npm ci
        npm install -g firebase-tools

  - name: node:20
    entrypoint: bash
    secretEnv:
      - FIREBASE_TOKEN
    args:
      - -c
      - |
        firebase deploy \
          --only functions \
          --project ${PROJECT_ID} \
          --token "$FIREBASE_TOKEN"

options:
  logging: CLOUD_LOGGING_ONLY

Cloud Build実行時だけ環境変数へ展開されます。


Cloud Buildのサービスアカウント

Cloud Buildのサービスアカウントには、

  • Cloud Functions Developer
  • Secret Manager Secret Accessor
  • Cloud Build Editor
  • Service Account User

など、必要最小限の権限を付与しています。

特にSecret Managerは、

Secret Accessor

権限がないと取得できません。


Cloud Build Trigger

GitHubと連携し、

例えば

  • main
  • release/*

へのPushで自動実行しています。

GitHub Push

↓

Cloud Build Trigger

↓

Cloud Build

↓

Deploy

手動でFirebase CLIを実行することはなくなりました。


Secret Managerを使って良かったこと

以前は、

  • 開発者PC
  • CI環境

それぞれで認証情報を管理していました。

現在はSecret Managerで一元管理しています。

認証情報を変更する場合も、

Secret Managerを更新するだけで済むため、

リポジトリの修正や再配布は不要になりました。


導入して感じたこと

Cloud Buildへ移行したことで、

デプロイ作業が個人のPCから切り離されました。

さらにSecret Managerを利用することで、

認証情報もコードやローカル環境へ置かなくなり、

運用もしやすくなりました。

デプロイ手順も

Push

↓

Cloud Build

↓

Deploy

とシンプルになり、

誰が実行しても同じ環境・同じ手順でデプロイできるようになっています。


まとめ

今回の構成では、

  • GitHub PushでCloud Buildを起動
  • Secret Managerから認証情報を取得
  • Cloud Functionsを自動デプロイ
  • Cloud Buildに実行履歴を保存

という流れにしました。

以前のようにローカルPCからfirebase deployを実行する運用と比べ、

  • 環境差異がなくなった
  • 認証情報を一元管理できるようになった
  • デプロイの再現性が向上した

といったメリットを感じています。

特に、Secret Managerを組み合わせることで、デプロイだけでなく認証情報の管理も含めて、安全な運用ができるようになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?