为什么我的 Gitlab 管道的第二阶段的作业正在执行,尽管第一阶段的先前作业失败了?

问题描述 投票:0回答:2

我正在 Gitlab 上运行一个有 2 个阶段的管道。第一阶段有 2 个工作,其中一个有

allow_failure: true
。这有效,因为它失败了并且我看到一个橙色感叹号。另一个也失败了,我得到了一个红十字。

第二阶段有1个作业不应该被执行,因为一个可能不会失败的任务失败了。仍然被执行。我究竟做错了什么?我的理解是,默认情况下,在所有先前阶段都 100% 成功之前,第二个、第三个等阶段的作业永远不会被执行(手动或自动)。

这是我的 gitlab-ci.yml:

stages:
    - stage1
    - stage2

job1:
    stage: stage1
    script:
        - <something>
    allow_failure: true

job2:
    stage: stage1
    script:
        - <something>

job3:
    stage: stage2
    script:
        - <something>
gitlab gitlab-ci pipeline
2个回答
0
投票

你理解对了,如果job2失败,下一阶段就不应该运行,参见文档中的示例,它与你的yaml基本相同https://docs.gitlab.com/ee/ci/yaml/#允许失败

由于您的 gitlab-ci.yml 显然是一个简化版本,因此我没有看到这里有任何问题,但也许您遗漏了一些会影响此问题的内容。 job2 是手动作业吗? job2 是否扩展了可能具有“allow_failure: true”的其他作业?我建议在 job2 中添加“allow_failure: false”。


0
投票

考虑添加:

时间:on_success

第二阶段的工作,根据官方文件:

on_success(默认):仅当早期阶段没有作业失败或allow_failure:true时才运行作业。

© www.soinside.com 2019 - 2024. All rights reserved.