GitHub Actions で Google App Engine にデプロイする
GitHub Actions で Google App Engine にデプロイする仕組みを作ったので、その手順を備忘録として残しておきます。
環境は Ruby スタンダード環境です。
サービスアカウントを作る
まずはデプロイに必要なロールを持ったサービスアカウントを作ります。
App Engine 向けのロールについては以下のページに記載されています。
今回の用途であれば、まずは App Engine サービス管理者 と App Engine デプロイ担当者 が必要になりそうです。
また、
注: gcloud コマンドライン ツールや Admin API のような App Engine ツールを使用するには、ストレージ管理者の役割と Cloud Build 編集者の役割が必要です。
とあるように、ストレージ管理者 と Cloud Build 編集者 のロールも必要になるので、これら4つを付与しておきます。
サービスアカウントを作成したら、JSON 形式のキーを発行してダウンロードしておきます。
App Engine Admin API を有効化する
まだ有効化していなければ、App Engine Admin API を有効にします。
これがないと GitHub Actions から gcloud app deploy したときにエラーになってしまいます。
https://console.developers.google.com/apis/library/appengine.googleapis.com
サービスアカウントのキーをリポジトリの Secrets に設定する
リポジトリの Settings > Secrets を開き、サービスアカウントのキーを登録します。 (参照 : GitHub ヘルプ)
キー名は GOOGLE_APPLICATION_CREDENTIALS とし、値はキーを Base64 エンコードしたものを設定します。
cat my-key.json | base64 | pbcopy
ワークフローを実装する
Google Cloud SDK をセットアップしてくれる setup-gcloud という Action が公式から提供されているので、そちらを使います。
同リポジトリの example-workflows にある app-engine.yml を参考に、ワークフローを実装します。
サービスアカウントのキーをGOOGLE_APPLICATION_CREDENTIALS で登録している場合は、setup-gcloud の export_default_credentials は不要です。
あとはワークフローをリポジトリに追加すれば完成です。
これだけで自動デプロイの仕組みが作れてしまうなんて、GCP も GitHub Actions も本当に便利ですね。