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

Cloud Build未读取用户自定义构建参数问题排查

问题:Cloud Build中Docker Run环节无法正确传递环境参数

我需要从cloudbuild.yaml将环境参数传递到Cloud Build的Docker run环节,已经在Cloud Build UI触发器选项中定义了_MYFLAG和_SECOND_FLAG,但参数未被正确解析。

cloudbuild.yaml配置

steps:
  - name: gcr.io/cloud-builders/docker
    args:
      [
        build,
        -t,
        us-central1-docker.pkg.dev/XXX/test-flags/test-flags,
        ".",
      ]
  - name: gcr.io/cloud-builders/docker
    entrypoint: docker
    args:
      [
        run,
        -e MYFLAG=$_MYFLAG,
        -e SECOND_FLAG=$_SECOND_FLAG,
        us-central1-docker.pkg.dev/XXX/test-flags/test-flags,
      ]
images:
  [us-central1-docker.pkg.dev/XXX/test-flags/test-flags]
options:
  logging: CLOUD_LOGGING_ONLY
substitutions:
  _MYFLAG: "default build yaml arg"
  _SECOND_FLAG: ""

Dockerfile配置

FROM python:latest
COPY . .
RUN pip install -r requirements.txt  
CMD python main.py --myflag ${MYFLAG} \
    --second_flag ${SECOND_FLAG}  

Python代码

from absl import app
from absl import flags
from absl import logging


FLAGS = flags.FLAGS
flags.DEFINE_string("myflag", "Default value", "Flag description.")
flags.DEFINE_string("second_flag", "Default value second", "Flag description.")


def main(_):
    logging.info("STARTING FLAG SCRIPT")
    logging.info("myflag: %s", FLAGS.myflag)
    logging.info("second_flag: %s", FLAGS.second_flag)


if __name__ == "__main__":
    app.run(main)  

问题现象

输出结果显示:第一个参数将第二个参数识别为自身的参数值,第二个参数则使用了cloudbuild.yaml中的默认值,说明Cloud Build UI中定义的参数未被正确解析。

已尝试的方案

  • 参考Docker官方文档调整参数写法
  • 在cloudbuild.yaml中尝试-e MYFLAG=$_MYFLAG,、--env MYFLAG=$_MYFLAG,、"--env 'MYFLAG=$_MYFLAG',"等写法,但结果一致。

内容的提问来源于stack exchange,提问作者engineer-x

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:35:14