Github Actions から Google App Engine にデプロイしてみた
目次
冒頭
現在見ているこのサイトのデプロイを Github Actions を使って自動的に Google App Engine へ行うように仕組みを構築してみた。
今まではローカルから gcloud cli を使って直接デプロイしていた。そうするとデプロイ時点でのローカルの資材がデプロイされるため、必ずしもレポジトリの最新の内容がデプロイされているとは限らなかった。
職場では Gitlab と AWS で CICD が構築されているが、その「見たことある」を頼りに、Github と GCP で同じものを自身で構築してみた。
実現したいことは、master ブランチに PR がマージされたタイミングでビルドとデプロイが自動的に実行されて欲しい。全体では以下のような流れにする。
- ローカルで修正したブランチを Github 上に push する
- Github 上で PR を作る
- PR を master ブランチにマージする
- Github Actions が master ブランチへのマージを検知してビルドとデプロイを実行する
必要な知識
いろんなドキュメントを見ながら手探りで一通りやってみて、以下の知識がついた(必要だった)。
- Github Actions
- Github Actions の GAE プラグイン
- IAM の知識
- Workload Identity pools の知識
作業の順番
- Github Actions を定義する
- GCP 側を構築する
- Github Actions と GCP を結合する
- 権限不足のエラーログを見ながら必要な権限周りをつけるトライアンドエラー
概要を掴む
まずは、公式のドキュメントを読んで概要を掴む。
書くのに力尽きたので、この続きは気が向いたらいつか続きを書く。
references
- About security hardening with OpenID Connect
- Configuring OpenID Connect in Google Cloud Platform
- Workload Identity 連携を構成する
- GitHub Actions からのキーなしの認証の有効化
- https://christina04.hatenablog.com/entry/workload-identity-federation
- https://medium.com/google-cloud/how-does-the-gcp-workload-identity-federation-work-with-github-provider-a9397efd7158