2

使用bash跑步者,是否有任何理由为什么以下变量扩展不起作用?

variables:
  GIT_BRANCH: "${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-${CI_COMMIT_BRANCH:-$CI_DEFAULT_BRANCH}}"

job1:
  script:
    - echo $GIT_BRANCH

作业输出}

我正在使用 GitLab 企业版 14.1.8-ee。

4

3 回答 3

3

这些扩展是由 GitLab CI 完成的,而不是 bash,因此它们可能根本无法像 bash 那样强大地处理嵌套扩展。

他们可能认为变量名是 next 的所有内容},因此CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-${CI_COMMIT_BRANCH:-$CI_DEFAULT_BRANCH没有右花括号。}这可以解释为什么当尘埃落定时会有剩余物。

于 2022-02-08T17:33:17.290 回答
2

当您在此处尝试时,Gitlab 变量无法执行 bash 操作。

Gitlab 明白${VARIABLE_NAME}

在你的情况下

${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-${CI_COMMIT_BRANCH:-$CI_DEFAULT_BRANCH}}

Gitlab试图找到变量CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-${CI_COMMIT_BRANCH:-$CI_DEFAULT_BRANCH}

但是这个变量不存在,所以它只输出}

于 2022-02-08T17:33:51.793 回答
1

如其他答案所述,此语法不会扩展您的期望。作为一种解决方法,您也许可以使用rules:variables:来获得相同的效果。

my_job:
  rules:
    - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
      variables:
        GIT_BRANCH: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
    - if: '$CI_COMMIT_BRANCH'
      variables:
        GIT_BRANCH: $CI_COMMIT_BRANCH
    - when: on_success
  variables:
    GIT_BRANCH: $CI_DEFAULT_BRANCH

您也可以考虑直接在作业脚本中使用export. 然后 bash 变量扩展将按预期工作。

于 2022-02-08T20:11:27.127 回答