My Note

自己理解のためのブログ

Goアプリを Google App Engine ( GAE ) に GitHub Actionsでデプロイする(秘密鍵を利用する場合)

はじめに

今回はGithub ActionsでGoogle App Engine ( GAE ) に デプロイします。認証にはサービスアカウントの秘密鍵を利用します。 後にOpenID Connect(OIDC)を利用するケースについてもまとめます。

以下の記事でGoのフレームワーク(Echo)で作成した貴金属の価格をjsonで返すAPIGoogle App Engine ( GAE ) にデプロイしました。 そこで今回はこのアプリをmainブランチにマージしたらGAEに自動デプロイできるようにします。

yhidetoshi.hatenablog.com

利用するGIthub-Actionsのライブラリ

github.com

github.com

サービスアカウントを作成

作成したサービスアカウントに以下の権限を付与して秘密鍵を発行する。

  • 権限
    • Storage オブジェクト閲覧者
    • Storage オブジェクト作成者
    • Cloud Build サービス アカウント
    • サービス アカウント ユーザー
    • App Engine デプロイ担当者

GitHub Actionsについて

githubのsecretsに GCP_SA_KEY を作成して、発行したjson形式を貼り付けて保存する。 コードは以下の通り。

  1. Google Cloudに認証
  2. App Engineをデプロイ
  3. デプロイしたエンドポイントに curl で動作確認
name: Deploy Google App Engine
on:
  push:
    branches:
      - main
    paths:
      - ./**
      - .github/workflows/deploy.yaml

permissions:
  id-token: write
  contents: read


env:
  BASIC_AUTH_ID: ${{ secrets.BASIC_AUTH_ID }}
  BASIC_AUTH_PW: ${{ secrets.BASIC_AUTH_PW }}
  BASIC_AUTH_PATH: /metal
  GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }}
  

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - uses: 'actions/checkout@v2'

      - name: 'Authenticate to Google Cloud'
        uses: 'google-github-actions/auth@v0.6.0'
        with:
          credentials_json: '${{env.GCP_SA_KEY }}'

  
      - name: 'Deploy to App Engine'
        id: 'deploy'
        uses: 'google-github-actions/deploy-appengine@v0.6.0'
        with:
          deliverables: 'app.yaml'
          promote: false
          version: 'v1'

      - name: 'validate'
        run: curl -sS -u ${{ env.BASIC_AUTH_ID }}:${{ env.BASIC_AUTH_PW }} ${{ steps.deploy.outputs.url }}${{ env.BASIC_AUTH_PATH }}

github actionsの実行結果

f:id:yhidetoshi:20220214152347p:plain