我需要将值动态传递给 GitLab CI 管道,以将值进一步传递给作业。问题是:该值不能存储在代码中,不需要重新配置管道(例如,我可以在 .gitlab-ci.yml
的“变量”部分传递值,但它意味着存储值在代码中,或更改“CI/CD 设置”的“环境变量”部分意味着手动重新配置)。此外,分支名称也不能用于该目的。
它不是 secret 字符串,而是修改管道执行的关键字。 那么,我该怎么做呢?
最佳答案
您没有指定此值的来源。
你说“将提交的值传递给...”
如果是关于提交本身的一些元信息,请查看 Predefined environment variables 的列表
有很多名为 CI_COMMIT_*
的变量可能对您有用。
但是, 如果它是您在管道中在一项工作 中产生的某些值(value),并希望传递给另一项工作 - 则另当别论。 有一个长期存在的请求Pass variables between jobs , 仍未实现。
目前的解决方法是使用artifacts - 文件来分阶段在作业之间传递信息。
我们的用例是从 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 ..."
关于variables - 如何将值从提交传递到 GitLab CI 管道作为变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56817867/