Maven 升级无法 运行 包 appengine:stage

Maven upgrade unable to run package appengine:stage

我有一个 Java 8 Spring 启动应用程序部署到 Google App Engine 并通过 GCP CloudBuild 构建。我正在尝试将它从 Java 8 升级到 Java 11.

cloudbuild.yaml 文件中,我更改了:

- id: 'Build and Test'
  name: 'gcr.io/cloud-builders/mvn:3.5.0-jdk-8'
  args: ['package', 'appengine:stage']

至:

- id: 'Build and Test'
  name: 'maven:3.8.3-jdk-11'
  args: ['package', 'appengine:stage']

当我运行 CloudBuild时,这一步突然失败并出现以下错误:

docker.io/library/maven:3.8.3-jdk-11
/usr/local/bin/mvn-entrypoint.sh: 50: exec: package: not found

在其之前的配置中,运行ning 很好。整个 cloudbuild.yaml 文件是:

steps:
  - id: 'copy file'
    name: 'ubuntu'
    args: ['cp', 'src/main/appengine/app.yaml', src/main/appengine/app.yaml]

  - id: 'Build and Test'
    name: 'maven:3.8.3-jdk-11'
    args: ['package', 'appengine:stage']

这是怎么回事? gcr.io/cloud-builders/mvn:3.5.0-jdk-8 图像是否以某种方式理解 mvn package appengine:stage,而 maven:3.8.3-jdk-11 图像不理解?主要是我只需要有人帮助我理解为什么我会收到错误。如果有人也可以就如何修复或规避它提供一些建议,那也将不胜感激。提前致谢!

查看有关迁移到 Java 11 runtime 的 Google 文档,我发现 App Engine 标准环境允许您在 Java 11 运行时,减少运行时转换工作量和复杂性。

项目引擎 API JAR 允许您的 Java 11 应用联系捆绑服务 API 并访问与 Java 8 运行时相同的大部分功能.

您还可以使用 Google 在功能上等同于 App Engine 打包服务的云产品。

正在添加 overview of the migration process 文档。

要遵循的过程是:

  • 下载 Cloud SDK。
  • 从独立的 App Engine Maven 插件迁移到云端 基于 SDK 的 Maven 插件或基于 Cloud SDK 的 Gradle 插件。
  • 安装 App Engine API JAR 如果您使用的是 App Engine 捆绑服务。
  • 将您的 XML 文件迁移到等效的 yaml 文件。

现在,关于您遇到的问题,您应该指定脚本的整个路径,因为 /usr/src/app 可能不在您的路径中。您还必须确保您的 entrypoint.sh 是可执行的;但是,根据您的情况,docker 将精确复制您构建主机上的权限,因此可能不需要此步骤。

另外建议entrypoint/command不能用单引号',可以用,

试试

事后看来,这是显而易见的。我需要将 mvn 指定为步骤中的入口点命令,如下所示:

- id: 'Build and Test'
  entrypoint: mvn
  name: 'maven:3.8.3.0-jdk-11'
  args: ['package','appengine:stage']