@int128

int128.hatenablog.com

Circle CIでCloud Functionをデプロイする

以前に Circle CIでCloud Functionをデプロイする - GeekFactory というエントリを書きましたが、gcloudコマンドでデプロイする方が簡単でした。gcloudコマンドでデプロイする手順を説明します。

GCPの設定

デプロイに使用するサービスアカウントを作成します。ロールは Project Editor を割り当てておきます。Cloud Functionsはまだベータ版なので専用のロールが用意されていないようです。

サービスアカウントを作成したら秘密鍵をダウンロードします。後からCircleCIで設定できるように、BASE64エンコードしておきます。

base64 service-account-xxxxxxxx.json

次に、デプロイで使用するストレージバケットを作成します。名前は何でも構いません。

CircleCIの設定

下記の内容で .circleci/config.yml を作成します。

version: 2
jobs:
  build:
    docker:
      - image: google/cloud-sdk
    working_directory: ~/repo
    steps:
      - checkout
      - run: echo "$GOOGLE_AUTH" | base64 -i --decode > "$HOME/gcp-key.json"
      - run: gcloud auth activate-service-account --key-file "$HOME/gcp-key.json"
      - run: gcloud --quiet config set project "$GOOGLE_PROJECT_ID"
      - run: gcloud beta functions deploy 関数名 --stage-bucket バケット名 --trigger-http

gcloud beta functions deploy コマンドの使い方は Deploying from Your Local Machine  |  Cloud Functions Documentation  |  Google Cloud Platform を参照してください。

下記の環境変数を設定します。

ビルドが成功すればデプロイ完了です。