为什么嵌套参数扩展在 GitLab CI/CD 中不能正常工作?
Why doesn't nested parameter expansion work correctly in GitLab CI/CD?
使用 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 那样稳健地处理嵌套扩展。
他们可能认为变量名是下一个 }
之前的所有内容,所以 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 变量扩展将按预期工作。
使用 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 那样稳健地处理嵌套扩展。
他们可能认为变量名是下一个 }
之前的所有内容,所以 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 变量扩展将按预期工作。