Goアプリを Google App Engine ( GAE ) に GitHub Actionsでデプロイする(秘密鍵を利用する場合)
はじめに
今回はGithub ActionsでGoogle App Engine ( GAE ) に デプロイします。認証にはサービスアカウントの秘密鍵を利用します。 後にOpenID Connect(OIDC)を利用するケースについてもまとめます。
以下の記事でGoのフレームワーク(Echo)で作成した貴金属の価格をjsonで返すAPIをGoogle App Engine ( GAE ) にデプロイしました。 そこで今回はこのアプリをmainブランチにマージしたらGAEに自動デプロイできるようにします。
利用するGIthub-Actionsのライブラリ
- Google Cloudの認証
- Google App Engineにデプロイ
サービスアカウントを作成
作成したサービスアカウントに以下の権限を付与して秘密鍵を発行する。
- 権限
- Storage オブジェクト閲覧者
- Storage オブジェクト作成者
- Cloud Build サービス アカウント
- サービス アカウント ユーザー
- App Engine デプロイ担当者
GitHub Actionsについて
githubのsecretsに GCP_SA_KEY
を作成して、発行したjson形式を貼り付けて保存する。
コードは以下の通り。
- Google Cloudに認証
- App Engineをデプロイ
- デプロイしたエンドポイントに
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の実行結果