今回はチーム開発なので、常の最新の状態がデプロイされている状態にしたかったので、まず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に自動でデプロイされるようになります