UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Cloud Build】JavaのアプリケーションをAppEngine Deployする

これまでSpring Cloud GCP で Secret Manager に登録した秘密情報をアプリケーションの設定値として設定できるようにしてきて、これをデプロイするところまで行った

uga-box.hatenablog.com

uga-box.hatenablog.com

あとはこれをCloud BuildでAppEngine Deployするようにしたい

ローカルで検証する

Cloud Buildでデプロイするために、cloudbuild.yamlファイルを作成して管理画面から実行してみたが失敗が続いたので、まずはローカルで検証することにする

ローカルでのビルドとデバッグ  |  Cloud Build のドキュメント  |  Google Cloud

cloudbuild.yamlファイルを作成したら、以下のコマンドを打つとローカルで実行できる

$ cloud-build-local --config=cloudbuild.yaml --dryrun=false .

cloudbuild.yamlは以下とした

---
steps:
  - name: gcr.io/cloud-builders/mvn:3.5.0-jdk-8
    args:
      - clean
      - package
    id: 'build'
  - name: gcr.io/cloud-builders/gcloud
    args:
      - app
      - deploy
      - ./target/my-app-0.0.1-SNAPSHOT.jar
    id: 'deploy'
    waitFor: ['build']

ステップは2つで、mvn packageでjarを作ったあとにgcloud app deployでデプロイするようにしている

もともとローカルからデプロイするときはmvn appengine:deployを使っていたので、mvnイメージ(mvn:3.5.0-jdk-8)でそれを行おうとしたらgcloudがインストールされていないというエラーが発生したので2ステップに分けた

さらにcloudbuild.yamlapp deploy [jarのパス]にしているのは、指定しない場合以下のエラーが発生したため

Exception in thread "main" com.google.cloud.runtimes.builder.exception.ArtifactNotFoundException: No deployable artifacts were found. Unable to proceed

とりあえずこれでローカルのデプロイはうまくいった