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 も本当に便利ですね。