GitLab 变量未评估管道作业
GitLab Variable not evaluating for pipeline job
我有一个符合以下规则的管道作业:
Deploy:
rules:
- if: $CI_COMMIT_AUTHOR != "project <project25636_bot@example.com>" && $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"
changes:
- 'root/**/*'
如您所见,如果提交作者是 NOT "project project25636_bot@[=43,则此作业仅在成功提交时运行=]" 并且文件夹根已更改。
这只是一些次要背景:当普通用户将一些文件添加到根文件夹时,管道应该执行。然而,还有一个机器人用户也将文件保存到这个文件夹(通过另一个作业),当这个机器人“提交”时,我不希望它执行这个作业因此!=
。上述规则非常有效。
我想做的是删除机器人电子邮件地址的硬编码并使用变量来构建它。原始代码比较复杂,但为了演示和隔离问题所在,我将其简化如下:
如果我把上面的工作改成:
variables:
bot: "project <project25636_bot@example.com>"
Deploy:
rules:
- if: $CI_COMMIT_AUTHOR != "$bot" && $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"
changes:
- 'root/**/*'
它不起作用 - 它总是为机器人用户执行。我什至尝试了变量的许多变体,例如 ${bot}
但它从来没有起作用,就好像 GitLab 无法将变量相互比较一样。
在有人问我为什么要这样做之前 - 正如我所说,我已经简化了上面的内容以说明问题所在,我的真实代码动态构建了变量。当我无法让它工作时,我开始进一步简化代码,直到我到达现在的位置。
我尝试过的:
将规则更改为(以适应字符串中的空格):
$CI_COMMIT_AUTHOR != $bot
$CI_COMMIT_AUTHOR != ${bot}
$CI_COMMIT_AUTHOR != "${bot}"
谁能解释我哪里出错了?或者这似乎是 GitLab 的问题?
谢谢,
事实证明这是不可能的,因为 Gitlab 是个笑话。不支持将一个变量嵌套在另一个变量中。它在他们的积压中.... https://gitlab.com/groups/gitlab-org/-/epics/3589
我有一个符合以下规则的管道作业:
Deploy:
rules:
- if: $CI_COMMIT_AUTHOR != "project <project25636_bot@example.com>" && $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"
changes:
- 'root/**/*'
如您所见,如果提交作者是 NOT "project project25636_bot@[=43,则此作业仅在成功提交时运行=]" 并且文件夹根已更改。
这只是一些次要背景:当普通用户将一些文件添加到根文件夹时,管道应该执行。然而,还有一个机器人用户也将文件保存到这个文件夹(通过另一个作业),当这个机器人“提交”时,我不希望它执行这个作业因此!=
。上述规则非常有效。
我想做的是删除机器人电子邮件地址的硬编码并使用变量来构建它。原始代码比较复杂,但为了演示和隔离问题所在,我将其简化如下:
如果我把上面的工作改成:
variables:
bot: "project <project25636_bot@example.com>"
Deploy:
rules:
- if: $CI_COMMIT_AUTHOR != "$bot" && $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"
changes:
- 'root/**/*'
它不起作用 - 它总是为机器人用户执行。我什至尝试了变量的许多变体,例如 ${bot}
但它从来没有起作用,就好像 GitLab 无法将变量相互比较一样。
在有人问我为什么要这样做之前 - 正如我所说,我已经简化了上面的内容以说明问题所在,我的真实代码动态构建了变量。当我无法让它工作时,我开始进一步简化代码,直到我到达现在的位置。
我尝试过的:
将规则更改为(以适应字符串中的空格):
$CI_COMMIT_AUTHOR != $bot
$CI_COMMIT_AUTHOR != ${bot}
$CI_COMMIT_AUTHOR != "${bot}"
谁能解释我哪里出错了?或者这似乎是 GitLab 的问题?
谢谢,
事实证明这是不可能的,因为 Gitlab 是个笑话。不支持将一个变量嵌套在另一个变量中。它在他们的积压中.... https://gitlab.com/groups/gitlab-org/-/epics/3589