【发布时间】:2021-05-18 11:46:52
【问题描述】:
在使用预定义 CI 变量的 variables 块中定义变量时,不能在 rules 块中引用它。在这里,只有 job_1 被执行:
variables:
PRODUCTION_BRANCH: $CI_DEFAULT_BRANCH
stages:
- stage_1
job_1:
stage: stage_1
script:
- export
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
job_2:
stage: stage_1
script:
- export
rules:
- if: '$CI_COMMIT_BRANCH == $PRODUCTION_BRANCH'
但是当对PRODUCTION_BRANCH 的值进行硬编码时,它会按预期工作。在这里,两个作业都被执行:
variables:
PRODUCTION_BRANCH: "master"
stages:
- stage_1
job_1:
stage: stage_1
script:
- export
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
job_2:
stage: stage_1
script:
- export
rules:
- if: '$CI_COMMIT_BRANCH == $PRODUCTION_BRANCH'
查看作业的输出时(因为export 记录了环境变量),在这两种情况下,变量PRODUCTION_BRANCH 的值都正确为master。
为什么会有这样的行为,是否有修复/解决方法?
【问题讨论】:
-
你用的是什么版本?从 13.6 开始,类似的问题似乎已得到解决:gitlab.com/gitlab-org/gitlab/-/issues/206929 & gitlab.com/gitlab-org/gitlab/-/issues/34272 和 13.7:gitlab.com/gitlab-org/gitlab/-/issues/209864。这个仍然开放:gitlab.com/gitlab-org/gitlab/-/issues/35315
-
@Arty-chan 我正在运行 13.5.3 版。似乎最后一个问题与我有关
-
user1452736 发布了一个 Answer 说“这可能是因为在您的 gitlab 实例上禁用了此功能 https://docs.gitlab.com/ee/ci/variables/where_variables_can_be_used.html#enabling-the-nested-variable-expansion-feature”
标签: continuous-integration gitlab gitlab-ci gitlab-ci-runner