使用Cloud Build将Java App部署到GAE Standard

时间:2019-10-02 16:54:29

标签: java google-app-engine google-cloud-platform devops google-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.xml位于src/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

目标运行时也是Java 8

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

1 个答案:

答案 0 :(得分:3)

对于Java 8运行时,必须使用maven命令。

尝试此步骤

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

让我知道它是否有效。

否则,如果您不使用App Engine Java8特殊样式,则可以切换到Java11运行时。