GCP CloudBuild下Maven升级后无法执行package appengine:stage求助
报错原因
两个镜像的默认入口(ENTRYPOINT)配置存在差异,是本次报错的核心原因:
- 你之前用的GCP官方
gcr.io/cloud-builders/mvn系列镜像,默认入口已经预设为mvn命令,所以args中传入的参数会自动作为mvn的参数执行,原有配置可以正常运行。 - 本次替换的Docker Hub官方
maven:3.8.3-jdk-11镜像,默认入口是/usr/local/bin/mvn-entrypoint.sh启动脚本,该脚本会将你传入的第一个参数视为要执行的系统命令。你直接传入package作为第一个参数,系统找不到名为package的可执行文件,就会抛出exec: package: not found的错误。
修复方案
提供三个可直接落地的修复方式,任选其一即可:
- 方式一:在参数中补全mvn命令
- id: 'Build and Test' name: 'maven:3.8.3-jdk-11' args: ['mvn', 'package', 'appengine:stage']
- 方式二:显式指定步骤入口为mvn,和原有GCP镜像行为保持一致
- id: 'Build and Test' name: 'maven:3.8.3-jdk-11' entrypoint: 'mvn' args: ['package', 'appengine:stage']
- 方式三:直接使用GCP官方维护的OpenJDK11版Maven镜像,无需修改原有参数逻辑
- id: 'Build and Test' name: 'gcr.io/cloud-builders/mvn:3.8.6-openjdk-11' args: ['package', 'appengine:stage']
额外优化提醒
你当前配置中的copy file步骤无实际作用,源路径和目标路径完全相同,若需要将app.yaml复制到构建工作区根目录,可修改为:
- id: 'copy file' name: 'ubuntu' args: ['cp', 'src/main/appengine/app.yaml', '.']
内容的提问来源于stack exchange,提问作者hotmeatballsoup
相关产品推荐
相关产品推荐

