wheatandcatの開発ブログ

React Nativeで開発しているペペロミア & memoirの技術系記事を投稿してます

GAEをGitHub Actionsでデプロイできるようにする

今回はチーム開発なので、常の最新の状態がデプロイされている状態にしたかったので、まずbackend側のデプロイの自動化をしました。

Pull Request

github.com

実装

今回はGitHub Actionsでデプロイできるようにした。

コードは以下の通り

.github/workflows/deploy.yml

name: Deploy

on:
  push:
    branches:
      - main
env:
  REVIEW_APP_YAML: ${{ secrets.REVIEW_APP_YAML }}
  SERVICE_ACCOUNT_JSON: ${{ secrets.SERVICE_ACCOUNT_JSON }}
jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2
    - name: Create .env file
      run: echo $REVIEW_APP_YAML | base64 --decode -i > ./app.yaml
    - name: Create serviceAccount.json file
      run: echo $SERVICE_ACCOUNT_JSON | base64 --decode -i > ./serviceAccount.json
    - name: Set up Cloud SDK
      uses: google-github-actions/setup-gcloud@master
      with:
        project_id: ${{ secrets.GCP_PROJECT_ID }}
        service_account_key: ${{ secrets.GCP_SA_KEY }}
        export_default_credentials: true

    - name: Use gcloud CLI
      run: gcloud app deploy --quiet app.yaml

GAEのデプロイには、 google-github-actions/setup-gcloudを使用

github.com

使い方はproject_idにGCPのプロジェクト名service_account_keyにサービスアカウントkeynのjsonの中身をbase64に変換した値を設定すればOK。

    project_id: ${{ secrets.GCP_PROJECT_ID }}
    service_account_key: ${{ secrets.GCP_SA_KEY }}

その他のgitignoreしているビルドに必要なファイルもbase64に変換してGitHub ActionsのSecretに設定しておいて、CI実行時にbase64かたデコードしてファイルを生成

    - name: Create .env file
      run: echo $REVIEW_APP_YAML | base64 --decode -i > ./app.yaml
    - name: Create serviceAccount.json file
      run: echo $SERVICE_ACCOUNT_JSON | base64 --decode -i > ./serviceAccount.json

これで準備完了です。実際にpushすると以下のGitHub ActionsのJobが実装されて、

スクリーンショット 2021-04-03 13 58 23

GAEに自動でデプロイされるようになります

f:id:wheatandcat:20210403194544p:plain