使用 Cloud Build 将 Java 个应用程序部署到 GAE Standard

Deploy Java App to GAE Standard using Cloud Build

我正在尝试使用 CloudBuilder 将 Java 应用程序部署到 GAE Standard。

我的cloudbuild.yaml如下:

steps: - name: "gcr.io/cloud-builders/gcloud" args: ["app", "deploy"] timeout: "1600s"

我有一个app.yaml(我不确定我是否需要),但是部署似乎总是找不到appengine-web.xml

我有一个相当标准的 Maven 文件结构,appengine-web.xmlsrc/main/webapp/WEB-INF/appengine-web.xml

我犯了一大堆错误,主要是与 appengine-web.xml 有关,最近的错误是

ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: WEB-INF/appengine-web.xml is required for this runtime.

有没有人可以使用这种构建?

顺便说一句,从我的开发机器上使用 maven 进行部署是可行的

mvn -D skipTests clean package appengine:deploy

编辑更多信息。

我正在使用 Java 8

目标运行时间也是Java8

appengine-web.xml如下

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application>myapp-staging</application>
    <version>alpha-001</version>
    <threadsafe>true</threadsafe>
    <runtime>java8</runtime>

    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
    </system-properties>

   <env-variables>
        <env-var name="ENDPOINTS_SERVICE_NAME" value="myapp-staging.appspot.com" />
    </env-variables>

</appengine-web-app>

当 运行 从我的开发机器

时,我可以使用以下命令成功部署到 GAE

mvn -D skipTests clean package appengine:deploy

对于Java8运行时,你必须使用maven命令。

尝试这一步

steps:
  - name: "gcr.io/cloud-builders/mvn"
    args: ["-D", "skipTests", "clean", "package", "appengine:deploy"]

如果有效请告诉我。

否则,如果您不使用 App Engine Java8 special flavor,则可以切换到 Java11 运行时。