我希望从cloudbuild.yaml传递ENV参数,以便在云构建中的Docker运行期间插入值。
我在云构建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: ""
停靠文件
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)
从输出来看,第一个标志似乎将第二个标志解释为arg,第二个标志使用cloudbuild.yaml文件中的默认arg,这意味着云构建UI中的定义没有得到正确解释。
我试过
来自Docker:
- https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file
- https://docs.docker.com/engine/reference/run/#env-environment-variables
- 在云构建中。
-e MYFLAG=$_MYFLAG,
--env MYFLAG=$_MYFLAG,
"--env 'MYFLAG=$_MYFLAG',"
这两种方法产生相同的结果。
2条答案
按热度按时间irlmq6kh1#
你能用双引号试试你的舞步吗?
niwlg2el2#
只是猜测,但也可能是缺少花括号{}
${_我的标志}
因为文件里是这样的