如何在上一步失败时在Jenkins中运行条件步骤

时间:2014-02-23 08:47:00

标签: jenkins conditional

我正试图在詹金斯创建一个两步的工作。我希望第二步只在第一步失败时运行。 (第一步执行单元测试以查看我正在编译的代码是否良好 - 如果不是,那么我想在第二步中运行一些诊断。)

条件步骤插件似乎是一个很好的选择。但是,我无法弄清楚如何使用条件步骤插件在第一步失败时导致第二步运行。

条件步骤插件提供了一系列条件,例如“从不”,“布尔条件”......和“当前构建状态”。我原本以为我应该使用“当前构建状态”条件并将最差状态设置为“失败”并将最佳状态设置为“不稳定”。然后,如果第一步失败,第二步将运行。

然而,这似乎有问题。当第一步失败时,Jenkin将在此时停止工作。因此,第二步永远不会有机会评估其状况,看看它是否应该运行。

所以我看不出如何在条件步骤插件中使用失败的'当前构建状态' - 好像构建已经失败,我们永远不会进入条件步骤。如何在步骤1中将构建状态标记为失败,但是不能让Jenkins在此时停止作业?

非常感谢

Dave Sinclair

2 个答案:

答案 0 :(得分:0)

一个不优雅的出路将是使用“Post Build任务插件”。 它可以解析构建日志。因此,您可以将其设置为检查故障日志语句。找到后,您可以启动脚本。也许你可以通过这个脚本触发第二次构建。

我确信在后期构建任务生态系统中会有一些其他优雅的选项。我正在看这个问题,看詹金斯专家回答它。

答案 1 :(得分:0)

您可以创建始终成功的脚本构建步骤。在该脚本中,您可以在一切正常时创建一个文件,在出现问题时创建另一个文件。您可以在两个单独的条件构建步骤中检查文件是否存在。例如:

REM Clean up flags
del build_failed
del build_ok

REM This should be the actual buildstep

REM Foobar does not exist, so it will return an error. dir will always work. Exchange the     REM between the two lines to test both scenarios
dir foobar
REM dir

REM Set the flags based on the build step status
IF NOT %ERRORLEVEL% == 0 (
    echo  > build_failed
) ELSE (
    echo  > build_ok
)

REM Ensure that this step will always pass
EXIT 0
相关问题