通过Maven部署至GCP标准版失败:Python缺失问题求助
问题解决:Google Cloud Build部署报错
python: command not found 问题根源
你遇到的问题是因为新版Google Cloud CLI(gcloud)的安装脚本依赖python命令,但gcr.io/cloud-builders/mvn:appengine镜像里只有python3可执行文件,没有创建python的别名,导致安装脚本找不到命令。
解决方案
方案1:添加Python别名(改动最小)
修改cloudbuild.yaml,先创建python到python3的软链接,再执行maven部署命令:
steps: - name: "gcr.io/cloud-builders/mvn:appengine" entrypoint: "bash" args: ["-c", "ln -s /usr/bin/python3 /usr/bin/python && mvn -D skipTests -D endpoints.project.id=$_ENDPOINTS_PROJECT_ID -D app.deploy.projectId=$_PROJECT_NAME clean package appengine:deploy -P $_PROFILE"] timeout: "1600s"
方案2:指定固定版本的Google Cloud SDK
强制使用兼容的旧版gcloud SDK,避免自动拉取最新版:
steps: - name: "gcr.io/cloud-builders/mvn:appengine" args: ["-D", "skipTests", "-D", "endpoints.project.id=$_ENDPOINTS_PROJECT_ID", "-D", "app.deploy.projectId=$_PROJECT_NAME", "-D", "cloudsdk.version=456.0.0", # 选择兼容python3的稳定版本 "clean", "package", "appengine:deploy", "-P", "$_PROFILE"] timeout: "1600s"
方案3:更换为现代构建镜像
旧的gcr.io/cloud-builders系列镜像维护性较差,建议切换到官方maven镜像并自行安装gcloud CLI:
steps: - name: "maven:3.8-openjdk-17" entrypoint: "bash" args: ["-c", " apt-get update && apt-get install -y curl python3 && curl https://sdk.cloud.google.com | bash && source /root/.bashrc && mvn -D skipTests -D endpoints.project.id=$_ENDPOINTS_PROJECT_ID -D app.deploy.projectId=$_PROJECT_NAME clean package appengine:deploy -P $_PROFILE "] timeout: "1600s"
验证建议
优先尝试方案1,改动最小,能快速验证是否解决问题。如果后续出现其他兼容性问题,再考虑方案2或3。
内容的提问来源于stack exchange,提问作者DaveH
相关产品推荐
相关产品推荐

