GeekFactory

int128.hatenablog.com

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 を追加する。DebianJavaの依存関係が複雑なため、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

参考資料です。

circleci.com