簡體   English   中英

如何在 .gitlab-ci.yml 變量中使用條件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM