GitHubActionsを使用してGoogleCloudのAppEngineにデプロイする方法の備忘録です。
バージョンアップで設定の仕方が変更になっている可能性があるため、最新情報はリポジトリを確認してください。
google-github-actions / deploy-appengine
A GitHub Action that deploys source code to Google App Engine.
deploy-appengine
This action deploys your source code to App Engine and makes the URL available to later build steps via outputs. This allows you to parameterize your App Engine deployments.
Prerequisites
-
This action requires Google Cloud credentials that are authorized to deploy an App Engine Application. See the Authorization section below for more information.
-
This action runs using Node 16. If you are using self-hosted GitHub Actions runners, you must use runner version 2.285.0 or newer.
Usage
jobs:
job_id:
permissions:
contents: 'read'
id-token: 'write'
steps:
- id: 'auth'
uses: 'google-github-actions/auth@v1'
with:
workload_identity_provider: 'projects/123456789/locations/global/workloadIdentityPools/my-pool/providers/my-provider'
service_account: 'my-service-account@my-project.iam.gserviceaccount.com'
- id: 'deploy'
uses: 'google-github-actions/deploy-appengine@v1'
# Example of using the output
- id: 'test'
run: 'curl "${{ steps.deploy.outputs.url }}"'
Inputs
…
サービスアカウントの準備
Google CloudのConsoleメニューのIAMと管理からサービスアカウントにアクセスしアカウントを作成します。App Engineに関するロールは「オーナー」「編集者」「App Engine管理者」「App Engine サービス管理者」のどれかにします。
また、ドキュメントにもあるとおりに、「ストレージ管理者」「Cloud Build編集者」も付与します。
作成したサービスアカウントの鍵の作成し、JSONをダウンロードします。
Actionの設定
ダウンロードした鍵のJSONの内容をそのまま、GitHub Actionsの環境変数に登録します。
準備が整ったら workflowを書いてコミットします。言語ごとのセットアップを適宜書き換えてください。
name: Deploy to App Engine
on:
push:
branches:
- main
jobs:
deploy:
name: GAE Deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: setup nodejs env # 言語に応じて変更する
uses: actions/setup-node@v3
with:
node-version: 18
- id: 'auth'
name: 'Authenticate to Google Cloud'
uses: 'google-github-actions/auth@v1'
with:
credentials_json: '${{ secrets.GCP_SA_KEY }}'
- name: Deploy App
id: deploy
uses: 'google-github-actions/deploy-appengine@v1'
with:
project_id: ${{ secrets.GCP_PROJECT_ID }}
問題なく設定できていれば、デプロイが完了します。
躓いた点
(gcloud.app.deploy) Your deployment has succeeded, but promoting the new version to default failed. You may not have permissions to change traffic splits. Changing traffic splits requires the Owner, Editor, App Engine Admin, or App Engine Service Admin role. Please contact your project owner and use the "gcloud app services set-traffic --splits <version>=1" command to redirect traffic to your newly deployed version.
権限が足りず、デプロイしたバージョンの反映に失敗したエラーです。サービスアカウントの権限をエラー文に書いてある内容のいずれかを付与しrerunすると、このエラーはなくせるはずです。
Top comments (0)