让jenkins构建为失败

让jenkins构建为失败,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,如果测试返回失败或不稳定,我想将整个构建标记为失败。我认为这样做就足够了: currentBuild.result = 'FAILURE' 而且它几乎起作用了。在詹金斯控制台里我可以看到 Finished: FAILURE 整个管道都用红色标记,但当我将鼠标移到上面时,它表示状态为成功: 我想要一个信息,状态是失败,而不是成功。 您可以在下面查看我的代码: stage('Run tests') { boolean currentBuildUnstable = false p

如果测试返回失败或不稳定,我想将整个构建标记为失败。我认为这样做就足够了:

currentBuild.result = 'FAILURE'
而且它几乎起作用了。在詹金斯控制台里我可以看到

Finished: FAILURE
整个管道都用红色标记,但当我将鼠标移到上面时,它表示状态为成功:

我想要一个信息,状态是失败,而不是成功。 您可以在下面查看我的代码:

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'
        }
    }
}

好的,我设法解决了这个问题。我创建了另一个阶段,在这个阶段中,我将构建作为失败。我的代码现在如下所示:

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'
        }
    }
}

但是,我不知道为什么以前的代码没有像预期的那样工作。

我很确定,当鼠标悬停在“成功”上时,表示阶段是成功的,而不是构建是成功的。如果您想强制某个阶段失败,只需抛出一个异常即可。如果您想强制某个阶段始终成功,请在该阶段的内容周围加上一个try/catch on any error。

请显示您的代码为什么要传递
传播:false
?如果子作业失败,您将禁用将作业标记为失败的默认行为。