首页 > 解决方案 > 在参数化触发器插件中,“使此构建步骤失败”和“将此构建标记为失败”有什么区别?

问题描述

我正在检查使用参数化触发器插件调用其他项目的工作。我试图理解两个选项:如果触发的构建更差或等于,则此构建步骤失败;如果触发的构建更差或等于,将此构建标记为失败。有可用的文档,但我也不明白。

  • 如果触发的构建更差或等于:则此构建步骤失败: 如果其值不是never ,则此选项优先于以下两个选项。在这种情况下,当前构建步骤的结果(即成功或失败)基于触发构建的结果。如果满足为至少一个触发构建定义的条件,则构建步骤将被视为失败
  • 如果触发的构建更差或等于:则将此构建标记为失败:如果其值未设置为never,则此选项优先于下一个。在这种情况下,当前构建将根据触发构建的结果和选项的值被视为失败。

*文档中暗示的第三个选项是“如果触发的构建更差或等于,则将此构建标记为不稳定”,我想它与第二个选项的工作方式相同

这里“构建步骤失败”和“构建失败”之间的实际区别是什么?第一个是否意味着步骤“失败”并且构建“失败”但构建继续执行?第二个将构建设置为“失败”然后停止?“不稳定”版本会发生什么,据我所知,“不稳定”状态通常不会停止构建?

标签: jenkinsjenkins-plugins

解决方案


这两个选项之间的区别确实是在触发构建失败的情况下失败类型的行为。这两个选项允许在构建步骤失败时更改默认行为。我将尝试根据插件方法的源代码perform来解释行为。

每个构建器插件(将作为构建步骤公开)都有一个perform方法,该方法将在执行插件的构建步骤时调用。为了表示失败,此方法可以抛出异常或返回false- 这将通知执行者该步骤已失败,因此它将停止执行任何进一步的构建步骤并将构建结果标记为FAILURE。但是,该perform函数也可以直接设置构建结果并返回true- 从而在没有失败的情况下通知执行器,同时仍将构建结果设置为所需的值。

现在让我们检查一下这个插件的情况 a (当您将选项配置为FAILURE时):

  • 当您选择Fail this build step 如果触发的构建更差或等于它会导致perform方法返回 false,从而通知执行者该步骤失败,因此 执行将停止不会执行进一步的构建步骤,构建结果将被标记为FAILURE
    在控制台输出中,您将看到如下内容:

构建步骤“在其他项目上触发/调用构建”将构建标记为失败

  • 当您选择将此构建标记为失败时,如果触发的构建更差或等于它,将导致perform方法设置构建结果使用build.setResult(r);但返回值将是true,因此 执行不会停止将执行进一步的构建步骤,但构建结果将被标记为FAILURE
    在控制台输出中,您将看到如下内容:

构建步骤“在其他项目上触发/调用构建”将构建结果更改为 FAILURE

关于“不稳定”版本,就像第二个选项一样,它们都“标记此构建” - 这意味着它们只是设置构建结果并且不影响执行。在“UNSTABLE”结果的情况下,这是默认的唯一行为,因为它永远不会停止执行,因此“UNSTABLE”结果具有第一个选项没有意义。

TL;DR两个选项之间的差异:
如果触发的构建更差或等于,则使此构建步骤失败:将使当前正在运行的构建步骤失败,停止所有进一步的构建步骤执行并将构建结果标记为FAILURE
如果触发的构建更差或等于:则将此构建标记为失败:会将构建结果标记为FAILURE,并继续执行所有后续构建步骤。


推荐阅读