Cloud Run Job命令行部署正常,cloudbuild.yml部署异常排查
问题排查:Cloud Build部署Cloud Run Job报错"exec: 'run': executable file not found"
错误根源
本地执行gcloud run jobs deploy能成功,是因为你明确调用了gcloud命令,再把后续参数传给它。但在Cloud Build的步骤里,你直接把run作为第一个参数传入,cloud-sdk镜像会尝试直接执行run这个可执行文件——而镜像里根本没有这个文件,所以触发找不到命令的错误。
修正后的cloudbuild.yml配置
必须在args的最开头加上gcloud,让镜像知道要执行gcloud命令,再传入后续的部署参数:
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' id: Deploy args: ['gcloud', 'run', 'jobs', 'deploy', 'myjob', '--project', '$PROJECT_ID', '--image', '$LOCATION-docker.pkg.dev/$PROJECT_ID/myrepo/myimage:latest', '--region', '$LOCATION']
两种部署方式的核心差异
- 本地命令行:你输入的是完整命令
gcloud run jobs deploy...,系统会先定位到gcloud可执行文件,再把run jobs deploy...作为参数传递给它。 - Cloud Build步骤:使用cloud-sdk镜像时,步骤的args列表第一个元素会被当作要执行的命令。之前的配置里第一个元素是
run,系统找不到这个命令,自然报错;加上gcloud后,才会正确调用gcloud工具执行后续部署逻辑。
内容的提问来源于stack exchange,提问作者Wells
相关产品推荐
相关产品推荐

