0
votes

My spring boot application was working fine in cloud build & deployed without any issue till September. Now my trigger fails in gcloud app deploy.

Step #4: ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: Deployment cannot use a pre-built image. Pre-built images are only allowed in the App Engine Flexible Environment.

app.yaml

runtime: java11
env: standard
service: service
handlers:
  - url: /.*
    script: this field is required, but ignored

cloudbuild.yaml

steps:
# backend deployment
# Step 1:
  - name: maven:3-jdk-14
    entrypoint: mvn
    dir: 'service'
    args: ["test"]

# Step 2:
  - name: maven:3-jdk-14
    entrypoint: mvn
    dir: 'service'
    args: ["clean", "install", "-Dmaven.test.skip=true"]

# Step 3:
  - name: docker
    dir: 'service'
    args: ["build", "-t", "gcr.io/service-base/base", "."]

# Step 4:
  - name: "gcr.io/cloud-builders/docker"
    args: ["push", "gcr.io/service-base/base"]

# Step 5:
  - name: 'gcr.io/cloud-builders/gcloud'
    dir: 'service/src/main/appengine'
    args: ['app', 'deploy', "--image-url=gcr.io/service-base/base"]
    timeout: "30m0s"
# Step 6:
  # dispatch.yaml deployment
  - name: "gcr.io/cloud-builders/gcloud"
    dir: 'service/src/main/appengine'
    args: ["app", "deploy", "dispatch.yaml"]
    timeout: "30m0s"
timeout: "100m0s"
images: ["gcr.io/service-base/base"]

Cloud build error

Thanks in advance. Im confused how my build was working fine before & what am i doing wrong now.

2

2 Answers

1
votes

You can't deploy custom container on App Engine standard. You have to provide your code and the environment runtime. Then Buildpack is used to create a standard container on Google Side (for information, a new Cloud Build job is ran for this) and deployed on App Engine.

I recommend you to have a look to Cloud Run to use your custom container. It's very close to App Engine (and even better on many points!) and very customizable.

0
votes

What your cloudbuild.yaml comment's refer to as Step 5 corresponds to the Step #4 in the error because system begins numbering steps from 0.

The error message is accurate; App Engine standard (!) differs from App Engine flexible in that the latter (flexible) permits container image deployments. App Engine standard deploys from sources.

See Google's example.

It's possible that something has changed Google's side that's causing the issue but, the env: standard in your app.yaml suggests the build file has changed.