我需要将值动态传递给GitLab CI管道,以将值进一步传递给作业。问题是:该值无法存储在代码中,并且不需要重新配置管道(例如,我可以在.gitlab-ci.yml
的“变量”部分中传递该值,但这意味着将值存储在代码中,或者更改“ “ CI / CD设置”的“环境变量”部分表示手动重新配置。另外,分支名称也不能用于此目的。
它不是秘密字符串,而是修改管道执行的关键字。 那么,我该怎么办呢?
答案 0 :(得分:0)
您没有指定此值的来源。
您说“将值从提交传递给...”
如果是有关提交本身的一些元信息,请查看Predefined environment variables
的列表
有很多名为CI_COMMIT_*
的变量可能对您有用。
但是, 如果您是在管道中在一项工作中生成的某个价值,并且想要传递给另一项工作,则情况有所不同。 对Pass variables between jobs的请求长期存在,但尚未实现。
此刻的解决方法是使用工件-文件来分阶段在作业之间传递信息。
我们的用例是从pom.xml
中提取Java应用程序版本,并在以后将其传递给某些打包工作。
这是我们在.gitlab-ci.yml
中的处理方式:
...
variables:
VARIABLES_FILE: ./variables.txt # "." is required for image that have sh not bash
...
get-version:
stage: prepare
image: ...
script:
- APP_VERSION=...
- echo "export APP_VERSION=$APP_VERSION" > $VARIABLES_FILE
artifacts:
paths:
- $VARIABLES_FILE
...
package:
stage: package
image: ...
script:
- source $VARIABLES_FILE
- echo "Use env var APP_VERSION here as you like ..."