1

我正在使用 Jenkins Pipeline 并行运行一些测试,我注意到 Blue Ocean 的工作结果表现得很奇怪。我声明了一个带有变量的全局类,以根据并行作业结果处理当前构建状态。

它可以工作,但是在 Blue Ocean UI 中似乎没有正确设置并行步骤状态。

我在下面准备了一个示例来说明发生了什么。管道定义为:

pipeline {
    stages {
        stage('Tests') {
            steps {
                script {
                    parallel(
                      a: {
                        echo "This is branch a"
                        manager.build.@result = hudson.model.Result.SUCCESS
                      },
                      b: {
                        echo "This is branch b"
                        manager.build.@result = hudson.model.Result.ABORTED
                      },
                      c: {
                        echo "This is branch c"
                        manager.build.@result = hudson.model.Result.UNSTABLE
                      },
                      d: {
                        echo "This is branch d"
                        manager.build.@result = hudson.model.Result.FAILURE
                        try {sh "exit 1"}catch(e){echo 'failure'}
                      }
                    )
                    manager.build.@result = hudson.model.Result.UNSTABLE
                }
            }
        }
    }
}

最后一行正确地更改了构建结果(无论我给它什么值 - SUCCESS、FAILURE、UNSTABLE 或 ABORTED)。

但是,每个并行步骤的结果始终是成功的。唯一的例外是当我将一般构建的状态设置为 UNSTABLE 时,所有并行步骤也会变为 UNSTABLE。下面是一个插图:

UI 错误表示

我希望每个并行步骤都有自己的结果,这对于调试测试结果非常有用,因为我需要在不同的机器/设备上并行运行测试。

是蓝海问题还是我在这里做错了什么?

4

0 回答 0