[英]How to use conditions in .gitlab-ci.yml variables?
我想知道,是否可以從 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 - 提交標簽名稱。 僅在構建標簽時出現。
因此在variables
部分CI_COMMIT_TAG
未定義,因此等於“”。
所以如果你想在定義標簽的作業中使用CI_COMMIT_TAG
。 見https://docs.gitlab.com/ee/ci/yaml/README.html#tags
這是可能的:
將您的邏輯添加到variable
部分:
variables:
VERSION_LOGIC: '(if [ "$${CI_COMMIT_TAG}" == "" ]; then echo "1.3.5.$$CI_PIPELINE_IID"; else echo "$${CI_COMMIT_TAG}"; fi);'
現在您可以在作業的腳本部分使用此邏輯:
version:
stage: versioning
script:
- VERSION=$(eval $VERSION_LOGIC)
- echo "The current version is set to ${VERSION}."
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.