我想知道是否可以通过 if-else 条件语句设置自定义 Gitlab CI 变量。
在我的 .gitlab-ci.yml
文件中,我有以下内容:
variables:
PROJECT_VERSION: (if [ "${CI_COMMIT_TAG}" == "" ]; then "${CI_COMMIT_REF_NAME}-${CI_PIPELINE_ID}"; else ${CI_COMMIT_TAG}; fi);
Trying to set project version:
image: php:7.1-cli
stage: test
script:
# this echoes correct string (eg. "master-2794")
- (if [ "${CI_COMMIT_TAG}" == "" ]; then echo "${CI_COMMIT_REF_NAME}-${CI_PIPELINE_ID}"; else echo ${CI_COMMIT_TAG}; fi);
# this echoes something like "(if [ "" == "" ]; then "master-2794"; else ; fi);"
- echo $PROJECT_VERSION
这可以做到吗?如果是这样,我错过了什么?谢谢
最佳答案
这是预期的行为。
CI_COMMIT_TAG
仅设置为 GitLab 作业中的值。来自 https://docs.gitlab.com/ee/ci/variables/README.html
CI_COMMIT_TAG - The commit tag name. Present only when building tags.
因此,在variables
部分中,CI_COMMIT_TAG
未定义,因此等于“”。
因此,如果您想使用CI_COMMIT_TAG
,请在定义标签的作业中使用。请参阅https://docs.gitlab.com/ee/ci/yaml/README.html#tags
关于variables - 如何在 .gitlab-ci.yml 变量中使用条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47204720/