如何在 Gitlab CI 中快速禁用/启用阶段

zb2*_*226 8 gitlab gitlab-ci

当你.gitlab-ci.yml为一个大项目工作时,例如有一个耗时的测试阶段会导致很多延迟。是否有一种简单的方法可以禁用该阶段,因为从stages定义中删除它,从 Gitlab 的角度来看,会使 YAML 无效(因为有一个已定义但未使用的阶段),在我的情况下会导致:

test job: chosen stage does not exist; available stages are .pre, build, deploy, .post
Run Code Online (Sandbox Code Playgroud)

由于 YAML 不支持块注释,因此您需要注释掉违规阶段的每一行。

有没有更快的方法?

小智 52

也可以使用rules和 ,when如下所示:

test:
  stage: test
  rules:
   - when: never
Run Code Online (Sandbox Code Playgroud)


Chr*_*ler 14

您可以使用以点 (' .')开头的作业名称的技巧来禁用舞台上的所有作业。有关更多详细信息,请参阅https://docs.gitlab.com/ee/ci/yaml/index.html#hide-jobs


yal*_*lie 9

有一种方法可以禁用单个作业(但不是阶段),如下所示:

test:
  stage: test
  when: manual
Run Code Online (Sandbox Code Playgroud)

默认情况下会跳过作业,但仍然可以在 UI 中触发:

Gitlab CI 截图


zb2*_*226 5

到目前为止,我发现的最简单的方法是使用rules如下定义:

test:
  stage: test
  rules:
    - if: '"1" != "1"'
(...)
Run Code Online (Sandbox Code Playgroud)

这仍然感觉有点奇怪,所以如果您有更好的解决方案,我很乐意接受另一个答案。

  • 我不知道这是什么语言或语法应该如何,但我很确定你可以使用 `false` 或 `0` 而不是 `"1" != "1"`。但无论如何,“when: never”更简单且更具描述性。 (8认同)