DEV Community

Yuta Goto
Yuta Goto

Posted on

Deploy to Google AppEngine with GitHubActions

GitHubActionsを使用してGoogleCloudのAppEngineにデプロイする方法の備忘録です。

バージョンアップで設定の仕方が変更になっている可能性があるため、最新情報はリポジトリを確認してください。

GitHub logo 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 }}"'
Enter fullscreen mode Exit fullscreen mode

Inputs

サービスアカウントの準備

Google CloudのConsoleメニューのIAMと管理からサービスアカウントにアクセスしアカウントを作成します。App Engineに関するロールは「オーナー」「編集者」「App Engine管理者」「App Engine サービス管理者」のどれかにします。
また、ドキュメントにもあるとおりに、「ストレージ管理者」「Cloud Build編集者」も付与します。

作成したサービスアカウントの鍵の作成し、JSONをダウンロードします。

Actionの設定

ダウンロードした鍵のJSONの内容をそのまま、GitHub Actionsの環境変数に登録します。

GitHub Actions Secret Variables

準備が整ったら 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 }}
Enter fullscreen mode Exit fullscreen mode

問題なく設定できていれば、デプロイが完了します。

Actions List

躓いた点

(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)