我在Jenkins Multijob项目中有2个阶段。一个清理阶段和其他阶段有4个测试作业要顺序运行。
我的问题是,当4个测试作业之一失败时,我想运行清理阶段,然后重新运行失败的作业。
可以在詹金斯上做到吗?
答案 0 :(得分:0)
是的,您可以使用jenkins管道实现所需的功能。我在下面提供了3个测试作业的示例:
node{
def results = new String[3]
stage("Run tests"){
for(int i=1; i<=3; i++) {
// Run tests and store results (SUCCESS, FAILURE, etc.) in array
results[i-1] = build(job: "TEST_JOB_$i", propagate: false).result
}
// If at least one test failed
if("FAILURE" in results)
{
build job: 'CLEANUP_JOB', propagate: false
for(int i=1; i<=3; i++) {
if(results[i-1] == "FAILURE")
{
// If this job fails now, then current build ends with failure
build(job: "TEST_JOB_$i", propagate: true)
}
}
}
}
}
“ propagate:false”会导致其余管道运行,即使构建失败。使用Multijob插件可以达到类似的效果,但这非常难看。