You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中获取GCloud Build步骤输出及Cloud Run服务URL

问题解答

操作中的错误原因

你使用的$BUILDER_OUTPUT不是Cloud Build的内置替换变量,Cloud Build只认可官方定义的、以$_开头的内置替换(比如$_PROJECT_ID、$_OUTPUT_PATH等),自定义替换变量需要提前在构建配置的substitutions字段中声明,否则会被判定为无效参数,触发invalid_argument错误。

其他获取Cloud Run服务URL的方法

方法1:使用Cloud Run Python客户端直接查询

部署完成后,调用google-cloud-run库的API直接获取服务详情,无需依赖Cloud Build的输出:

from google.cloud import run_v2

client = run_v2.ServicesClient()
request = run_v2.GetServiceRequest(
    name="projects/[PROJECT_ID]/locations/[REGION]/services/[SERVICE_NAME]"
)
service = client.get_service(request=request)
service_url = service.status.url
print(service_url)

方法2:在Cloud Build步骤中直接提取URL

修改Cloud Build的gcloud命令,用--format参数直接提取URL,避免使用无效的替换变量:

gcloud run services describe [SERVICE_NAME] --region [REGION] --format='value(status.url)' > /workspace/service_url.txt

之后在Python代码中读取该文件内容即可。如果是在Vertex Pipeline场景下,可将此文件路径绑定为组件输出参数,传递到后续步骤。

方法3:声明自定义替换变量后使用

如果坚持要使用自定义输出路径,需要在构建配置中提前声明BUILDER_OUTPUT作为自定义替换变量:

from google.cloud import cloudbuild_v1

build = cloudbuild_v1.Build()
# 声明自定义替换变量
build.substitutions["BUILDER_OUTPUT"] = "/workspace/output"
# 添加构建步骤
build.steps = [
    {
        "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
        "args": ["gcloud", "run", "deploy", "[SERVICE_NAME]", "--image", "[IMAGE_URI]", "--region", "[REGION]"]
    },
    {
        "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
        "args": ["bash", "-c", "gcloud run services describe [SERVICE_NAME] --region [REGION] > $BUILDER_OUTPUT/output"]
    }
]

内容的提问来源于stack exchange,提问作者asmaier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 18:02:44