【问题标题】:Maven upgrade unable to run package appengine:stageMaven升级无法运行包appengine:stage
【发布时间】:2021-12-29 13:08:34
【问题描述】:

我有一个部署到 Google App Engine 并通过 GCP CloudBuild 构建的 Java 8 Spring Boot 应用。我正在尝试将其从 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

在之前的配置中,它运行得很好。整个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 图像不理解?主要是我只需要有人帮助我理解为什么我会收到错误。如果有人也可以就如何修复或规避它提出一些建议,那也将不胜感激。提前致谢!

【问题讨论】:

    标签: docker maven google-app-engine java-11 google-cloud-build


    【解决方案1】:

    查看有关迁移到Java 11 runtime 的 Google 文档,我发现 App Engine 标准环境允许您在 Java 11 运行时使用 App Engine 的多个打包服务和 API,从而减少运行时转换工作和复杂性。

    Project Engine API JAR 允许您的 Java 11 应用联系捆绑的服务 API 并访问与 Java 8 运行时相同的大部分功能。

    您还可以使用功能上与 App Engine 打包服务相当的 Google Cloud 产品。

    添加overview of the migration process 文档。

    接下来的流程是:

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

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

    另外的建议是入口点/命令不能使用单引号',可以试试

    【讨论】:

    • 感谢@Jose (+1) 但是我特意提供了我自己的custom runtime container (Dockerfile + app.yaml),因为我会将应用程序从应用程序引擎迁移到 GKE/K8s 中未来 18 个月。我不确定这是否会改变你的答案,但我觉得大声喊出来很重要!
    【解决方案2】:

    事后看来是如此明显。我需要在步骤中指定mvn 作为入口点命令,如下所示:

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

    【讨论】:

      猜你喜欢
      • 2023-01-23
      • 2021-04-06
      • 2017-01-25
      • 1970-01-01
      • 2017-07-26
      • 2019-04-07
      • 2019-08-10
      • 2012-08-19
      • 2020-09-30
      相关资源
      最近更新 更多