2014-02-23 147 views
3

我正试图在Jenkins中创建2步作业。如果第一步失败,我只想运行第二步。 (第一步执行单元测试,看看我正在编译的代码是否正确 - 如果不是,那么我想在第二步中运行一些诊断程序)。如何仅在上一步失败时在Jenkins中运行条件步骤

有条件的一步插头似乎是一个不错的选择。这一点。但是,我无法解决如何使用条件步骤插件在第一步失败时导致第二步运行。

在有条件的一步插件提供的条件清单,如“从不”,“布尔条件” ......和“当前生成状态”。我本以为我应该使用“当前构建状态”条件,并将最坏状态设置为“失败”,并将最佳状态设置为“不稳定”。然后如果第一步失败,第二步将运行。

但是似乎有这个问题。当第一步失败时,Jenkin就停止了这项工作。所以第二步从来没有机会评估它的状况,看看它是否应该运行。

所以我不能看到如何使用的失败“当前构建状态”可能曾经在条件步骤插件使用 - 仿佛构建已经失败,我们永远不会有条件步骤。如何在第一步中将构建状态标记为失败,但没有让Jenkins在那一刻停止工作?

千恩万谢

戴夫·辛克莱

+0

入住这里杰森的回答http://stackoverflow.com/questions/9664716/archiving-artifacts-not-in-the-workspace-when-build-fails –

回答

0

一个不雅的出路将是使用“后生成任务插件”。 它可以解析构建日志。所以你可以设置它来检查失败日志语句。一旦找到你可以启动一个脚本。也许你可以通过这个脚本触发第二次构建。

我相信会有一些其他的优雅选择了那里在后期生成任务生态系统。我正在看这个问题,让詹金斯专家来回答。

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 
相关问题