bash - 为什么嵌套参数扩展在 GitLab CI/CD 中不能正常工作?

标签 bash gitlab gitlab-ci gitlab-ci.yml

使用 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 没有右大括号。这可以解释为什么尘埃落定后会有剩余的 }

关于bash - 为什么嵌套参数扩展在 GitLab CI/CD 中不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71038117/

相关文章:

docker - 将图层存储在gitlab ci docker executor中

python - 在 GitLab 中导入 ZAP Docker 镜像

linux - 根据映射对字符串进行更改

bash - Jenkinsfile 添加 if else 脚本?

docker - .gitlab-ci.yml 错误 : "apk: command not found"

gitlab - 远程 : GitLab: You are not allowed to push code to protected branches on this project

linux - Exec --no-startup-id <command> 表示 "--"无效选项

bash - 使用 awk 从一行中提取值

gitlab - 如何强制 GitLab 执行垃圾收集(并永久删除文件)

docker - Gitlab在Docker中从6.x迁移到8