测试阶段作业失败时运行清理阶段

时间:2018-10-05 17:15:57

标签: jenkins jenkins-plugins jenkins-pipeline build-automation ready-api

我在Jenkins Multijob项目中有2个阶段。一个清理阶段和其他阶段有4个测试作业要顺序运行。

我的问题是,当4个测试作业之一失败时,我想运行清理阶段,然后重新运行失败的作业。

可以在詹金斯上做到吗?

1 个答案:

答案 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插件可以达到类似的效果,但这非常难看。