即使在失败的阶段后继续管道

时间:2017-03-17 09:51:23

标签: jenkins jenkins-pipeline

我在Jenkins管道中运行一系列阶段。 每个阶段代表一个测试。 即使一个阶段(测试)失败,我也想继续以下阶段(测试),但我不知道如何。

我知道的唯一解决方案是使用try / catch子句封装舞台步骤,但是这样我就不会轻易知道测试是否失败或成功。

它们不能并行运行,必须按顺序运行。

有更好的解决方案吗?

相关问题:Jenkins continue pipeline on failed stage

1 个答案:

答案 0 :(得分:1)

这不是最佳选择,因为Jenkins不知道哪些阶段失败了,但我们手动收集这些数据:

    def success = 0
    def failed = []

    for (int i = 0; i < tests.size(); i++) {
        def test = tests[i]
        stage(test) {
            try {
                sh "...."
                success++
            } catch (e) {
                failed << test
            }
        }
    }
    stage('Report') {
        def failCount = tests.size()-success
        if (failCount == 0)
            echo "Executed ${success} tests successfully."
        else
            error """Executed ${success} tests successfully and ${failCount} failed:
${failed.join(', ')}"""
    }