今回はチーム開発なので、常の最新の状態がデプロイされている状態にしたかったので、まずbackend側のデプロイの自動化をしました。
Pull Request
実装
今回は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を使用
使い方は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が実装されて、

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