除了变量具有某些值之外,如何运行 gitlab 作业?

Ale*_*lex 5 gitlab gitlab-ci

我想在每种情况下运行 gitlab 作业,除非定义了变量RUN并包含 value run3

再说一遍:

  • 变量RUN未定义:运行作业
  • 变量RUN已定义但不包含值run3:运行作业
  • 变量RUN已定义并且包含值run3:请勿运行作业

我尝试了以下规则:

  rules:
    - if: $RUN != null && $RUN == "run3"
      when: never

  rules:
    - if: $RUN != "" && $RUN == "run3"
      when: never

  rules:
    - if: $RUN == "run3"
      when: never 
Run Code Online (Sandbox Code Playgroud)

RUN如果没有定义变量,则不会运行任何作业。我预计这项工作已经完成。

如何修复它?逻辑上问题出在哪里?

Ale*_*lex 4

经过一些耗时的试错试验后,我找到了解决方案:由于您无法测试变量是否存在,因此必须以相反的方式创建规则。这意味着,如果值不匹配,则运行作业:

那么正确的规则是:

- if: $RUN != "run3"
  when: always
- when: never
Run Code Online (Sandbox Code Playgroud)

第一部分仅计算true变量是否存在并且变量不计算为run3。在这种情况下,作业将运行。

第二部分告诉我们在任何其他情况下都不要运行该作业。