如果测试返回FAILURE或UNSTABLE,我想将整个构建标记为FAILURE。我认为这样就足够了:
currentBuild.result = 'FAILURE'
它几乎可以工作。在jenkins控制台中我可以看到
Finished: FAILURE
并且整个管道都标有红色,但是当我将鼠标移到它上面时,它表示状态为SUCCESS:
我希望获得状态为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'
}
}
}
答案 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包围舞台的内容。