CircleCIでApp Engine Javaアプリをデプロイする
CircleCI 2.0でGoogle App Engine (Java8 Standard) をデプロイする方法を調べたのでメモ。
google/cloud-sdk
イメージを使う。- App Engine SDKとGradleでJavaが必要になるので、
google/cloud-sdk:alpine
イメージにopenjdk8
を追加する。DebianはJavaの依存関係が複雑なため、Alpineをおすすめする。 - サービスアカウントでデプロイする。
あらかじめサービスアカウントの秘密鍵をBASE64エンコードし、CircleCIの $GCP_SERVICE_ACCOUNT_KEY
環境変数に入れておきます。
base64 -w0 gcp-service-account-key.json
最小構成の circle.yml
は下記のようになります。
version: 2 jobs: build: docker: - image: google/cloud-sdk:alpine working_directory: ~/gradle_project_name steps: - run: name: Install command: | apk --update add openjdk8 gcloud components install app-engine-java - checkout - run: name: Build command: | ./gradlew build - deploy: name: Deploy command: | if [ "$CIRCLE_BRANCH" = "release" ]; then echo "$GCP_SERVICE_ACCOUNT_KEY" | base64 -d > "$HOME/gcp-service-account-key.json" gcloud auth activate-service-account --key-file "$HOME/gcp-service-account-key.json" ./gradlew appengineDeploy fi
参考資料です。