如何在Hudson/Jenkins中执行所有构建步骤?

如何在Hudson/Jenkins中执行所有构建步骤?,jenkins,Jenkins,我正在使用Jenkins为我的系统构建许多客户端库,每个库都针对不同的语言。我的配置包括许多不同的构建步骤,每种语言一个,构建和/或测试库 现在,系统中一个突破性的更改将导致第一个构建步骤失败,并且没有其他构建步骤可以运行,这非常不方便。我需要运行所有构建步骤,以便能够看到所有生成的错误 另一种选择是存在一个配置,告诉jenkins如果早期构建步骤失败,不要中止后者的构建步骤。我没有找到这样的东西,但也许有 我想到的另一种选择是将每种语言作为一个单独的构建触发,但随后我必须将它们全部绑定到构建后

我正在使用Jenkins为我的系统构建许多客户端库,每个库都针对不同的语言。我的配置包括许多不同的构建步骤,每种语言一个,构建和/或测试库

现在,系统中一个突破性的更改将导致第一个构建步骤失败,并且没有其他构建步骤可以运行,这非常不方便。我需要运行所有构建步骤,以便能够看到所有生成的错误

另一种选择是存在一个配置,告诉jenkins如果早期构建步骤失败,不要中止后者的构建步骤。我没有找到这样的东西,但也许有

我想到的另一种选择是将每种语言作为一个单独的构建触发,但随后我必须将它们全部绑定到构建后的步骤中,我不知道如何做到这一点

当然,我可能遗漏了一些东西

以上任何一项都能解决我的问题。那么,我应该怎么做,我该怎么做呢?

这个插件就是你要找的。我经常使用这个插件。看看他们的屏幕截图——你可以指定三个选项来标记一个阶段(一个阶段可以有多个作业)是否成功

  • 当阶段作业的构建成功时
  • 即使阶段作业的构建不稳定
  • 即使阶段作业的构建失败-这就是您需要的
在您的情况下,您可以创建一个多作业作业,每个“客户端库”有一个阶段。并将各自的“客户端库”作业添加到它们的短语中。因此,如果您有10个“客户机库”作业,那么在这个MutliJob中您将有10个阶段(每个阶段一个)。不要忘记将“阶段作业”状态为“时将阶段标记为成功”设置为“完成(始终继续)


为此,我通常不喜欢使用下游作业,因为Jenkins中没有很好的UI可以在单个页面中查看整个构建流程。当然,这里显示了每个构建流的状态。您可以根据需要选择正确的插件。

要在一个作业中实现这一点,我认为您需要确保构建步骤不会失败(返回非零退出代码)。然后,您需要一个构建后步骤,该步骤分析测试结果并标记构建失败或不稳定(如果需要)

在运行构建/测试操作后,您可能需要编写一个包装器脚本来进行构建,例如simple.BAT或shell脚本,其最后一行是
exit 0


执行此类测试结果处理的生成后操作的示例是发布JUnit测试结果报告。

但如果它们被标记为成功,这是否意味着将执行生成后操作,并将生成本身标记为成功?不,您只是将阶段标记为成功,您的构建仍将显示为失败的构建(红色球)。这一特定阶段将显示为成功(蓝球)。这样,您就要求您的多作业继续执行其他阶段。顺便说一句,有一个很好的UI来查看整个构建流程——构建管道插件。好的,另一个问题。。。我现在明白了,这意味着拥有多个工作,然后将其集成到一个“多工作”工作中。然而,这意味着每个都在自己的工作区中运行,这不符合我的目的。我可以对工作区进行硬编码,但是如果多作业在一台服务器上运行,而它的任何子项都在另一台服务器上运行,那么它将无法工作。你处理过这样的问题吗?嘿,丹尼尔-首先,对延迟回复表示遗憾。这完全有道理。在我的情况下,我有一个简单的设置,没有任何奴隶,他们都在同一台机器上