使用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。
使用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。
这些扩展是由 GitLab CI 完成的,而不是 bash,因此它们可能根本无法像 bash 那样强大地处理嵌套扩展。
他们可能认为变量名是 next 的所有内容}
,因此CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-${CI_COMMIT_BRANCH:-$CI_DEFAULT_BRANCH
没有右花括号。}
这可以解释为什么当尘埃落定时会有剩余物。
当您在此处尝试时,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}
但是这个变量不存在,所以它只输出}
如其他答案所述,此语法不会扩展您的期望。作为一种解决方法,您也许可以使用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 变量扩展将按预期工作。