让jenkins构建为FAILURE

时间:2017-05-17 11:46:32

标签: jenkins groovy jenkins-pipeline

如果测试返回FAILURE或UNSTABLE,我想将整个构建标记为FAILURE。我认为这样就足够了:

currentBuild.result = 'FAILURE'

它几乎可以工作。在jenkins控制台中我可以看到

Finished: FAILURE

并且整个管道都标有红色,但是当我将鼠标移到它上面时,它表示状态为SUCCESS:

enter image description here

我希望获得状态为FAILURE的信息,而不是SUCCESS。 您可以在下面查看我的代码:

stage('Run tests') {
    boolean currentBuildUnstable = false
    parallel("Test 1": {
        def result = build job: 'test-1-job', propagate: false
        currentBuildUnstable = currentBuildUnstable || isUnstable(result)
    },"Test 2": {
        def result = build job: 'test-2-job', propagate: false
        currentBuildUnstable = currentBuildUnstable || isUnstable(result)
    },
        failFast: true
    )

    if(currentBuildUnstable) {
        node('master') {
            currentBuild.result = 'FAILURE'
        }
    }
}

2 个答案:

答案 0 :(得分:0)

好的,我设法解决了这个问题。我创建了另外一个阶段,我将构建为失败。我的代码现在看起来像这样:

boolean currentBuildUnstable = false
stage('Run tests') {
    parallel("Test 1": {
        def result = build job: 'test-1-job', propagate: false
        currentBuildUnstable = currentBuildUnstable || isUnstable(result)
    },"Test 2": {
        def result = build job: 'test-2-job', propagate: false
        currentBuildUnstable = currentBuildUnstable || isUnstable(result)
    },
        failFast: true
    )
}

if(currentBuildUnstable) {
    stage('Check') {
        node('master') {
            currentBuild.result = 'FAILURE'
        }
    }
}

但是,我不知道为什么以前的代码无法按预期工作。

答案 1 :(得分:0)

我非常确定"成功"当盘旋的时候说这个阶段是成功的,而不是构建是成功的。如果您想强制某个阶段失败,只需抛出异常即可。如果你想迫使一个舞台永远成功,请在任何错误的情况下用try / catch包围舞台的内容。