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