Continuous integration 如果管道作业/阶段失败,则触发操作/作业

Continuous integration 如果管道作业/阶段失败,则触发操作/作业,continuous-integration,gitlab,gitlab-ci,Continuous Integration,Gitlab,Gitlab Ci,我有一个GitLab管道,其中一个作业将一些内容写入一个文件,一个简单的.txt文件,并推送一个Git标记。在此作业之后,将执行其他作业 我想触发一个自动操作/作业,或者在管道的任何作业失败的情况下,撤销.txt文件写入并删除Git标记 有可能做这样的事吗?是否有某种GitLab管道作业只有在另一个失败时才会触发?您正在寻找when:on\u failure选项。其文档如下所示: 如果您将其放在作业上,则只有在管道中来自早期阶段的另一个作业失败时,该作业才会运行。如果在管道的末尾只需要一个,这将

我有一个GitLab管道,其中一个作业将一些内容写入一个文件,一个简单的
.txt
文件,并推送一个Git标记。在此作业之后,将执行其他作业

我想触发一个自动操作/作业,或者在管道的任何作业失败的情况下,撤销
.txt
文件写入并删除Git标记


有可能做这样的事吗?是否有某种GitLab管道作业只有在另一个失败时才会触发?

您正在寻找
when:on\u failure
选项。其文档如下所示:

如果您将其放在作业上,则只有在管道中来自早期阶段的另一个作业失败时,该作业才会运行。如果在管道的末尾只需要一个,这将很好,但它也允许在需要的每个阶段之后使用多个。以下是文档中的一个示例:

阶段:
-建造
-清理建筑
-试验
-部署
-清理
构建工作:
阶段:建造
脚本:
-建造
清理\生成\作业:
阶段:清理和构建
脚本:
-失败时清除生成
什么时候:发生故障
测试工作:
阶段:测试
脚本:
-测验
部署作业:
阶段:部署
脚本:
-部署
时间:手动
清理工作:
阶段:清理
脚本:
-工后清理
时间:总是
build
阶段中的作业将运行构建项目所需的任何操作,但如果任何操作失败,则
cleanup\u build
阶段中的作业将运行并删除任何构建工件或任何其他需要的操作

如果构建作业通过,测试阶段作业将运行测试。如果这些都通过了,我们就不必做任何清理,这样管道就会立即失效。否则,我们将继续到部署阶段

我们的部署阶段作业标记为
when:manual
,这是管道的另一个有用选项。这意味着在Gitlab用户或API点击按钮启动作业之前,此作业不会运行

我们在
清理
阶段的最后一项工作是
何时:始终
。这意味着无论前一阶段发生什么,它都将始终运行。这对于最终的清理非常好,如果部署失败,我们可以执行回滚或其他我们可能需要的操作


when
关键字及其所有选项的文档都在这里:

非常感谢您的回答!