Jenkins : How can I make a build fail if another job is unsuccessful?

标签 jenkins jenkins-pipeline jobs

我在 Jenkins 中有两个独立的作业,但一个作业只有在另一个作业的最后状态成功时才允许运行。

请注意:我不想自动触发作业;这两个作业都是手动触发的。

我怎样才能做到这一点?

注意:我使用的是 Jenkins 声明式管道语法。

最佳答案

有两种方法,我能想到的:

    A. 使用Parameterized Trigger Plugin :您可以将其用作构建步骤,并标记“阻止直到触发的项目完成构建”复选框。这应该正是您正在寻找的。

      B。您可以尝试使用 Multijob Project 选项来完成此操作。 Multijob Project 可帮助您控制要运行一组给定作业的方式 - 在并行阶段或不同阶段中执行,以便一个在另一个阶段之后执行 - 依赖或独立于前一阶段的结果(在你的情况下,它是依赖的) .
      1.转到您的 Jenkins 主页。
      2。寻找“新项目”。
      3.从选项中选择“多作业项目”。给这个 Multijob 起个名字,比如 JobSuite。

    enter image description here

      4.根据您对以下选项的要求配置“JobSuite”。这些可用选项是不言自明的,您可以添加要触发此作业的参数。为了您的引用,我添加了一个参数。如果您的作业在某个从站中运行,请勾选并选择您要限制运行的节点,否则不要选中

    enter image description here

      5.向下滚动,您会看到一个名为“添加构建步骤”的按钮。选择“多作业阶段”。

    enter image description here

      6.给多作业阶段一些名称,默认情况下,您将能够配置一个作业。输入第一个作业的名字,比如job1,你可以添加参数,传递参数。举个例子,我试图通过“预定义参数”传递一个参数,该参数将在触发 JobSuite 时作为输入。

      填写'Kill the phase on'='Failure(如果作业失败则停止阶段执行)'和'当作业状态为'='成功时下一阶段的继续条件'。这将确保只有当前阶段通过后下一阶段才会运行。

      注意:如果您想在此阶段并行运行更多作业,请单击“添加作业”在您的情况下,我们希望顺序运行作业 1和工作2。因此,我们需要两个阶段。

    enter image description here enter image description here

      7.重复第 5 步以添加将承载第二个作业的另一个阶段:job2。应用并保存。

    enter image description here

      8.您可以根据需要添加一些构建后操作,例如电子邮件通知等。
      9.使用所需参数运行 Mutijob Project- JobSuite。你会看到 job2 仅在 job1 成功时运行。

    希望对您有所帮助。

关于 Jenkins : How can I make a build fail if another job is unsuccessful?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49984477/

相关文章:

Jenkins多分支管道: clean workspace/delete directory when build ends

c - 在项目中期切换到 Jenkins 时,如何为旧标签构建工件?

hadoop - map 阶段不读取中间结果

jenkins - 删除具有匹配模式的 Jenkins 作业

jenkins - Gitlab webhook 获取错误:500 内部服务器错误 - URI::InvalidURIError

continuous-integration - Jenkins/Hudson - 在所有奴隶上运行脚本

maven - Jenkins Pipeline 和 SonarQube 设置

jenkinsfile 无法识别@Grab

jenkins - 将管道中的变量传递给 html.groovy 模板

laravel 反序列化/解码作业原始主体