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
相关产品推荐
相关产品推荐

