【问题标题】:Make jenkins build as FAILURE让詹金斯构建失败
【发布时间】:2017-05-17 20:47:03
【问题描述】:

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

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

【问题讨论】:

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

标签: jenkins groovy jenkins-pipeline


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我很确定悬停在“成功”上时表示该阶段是成功的,而不是构建成功。如果你想强制一个阶段失败,只需抛出一个异常。如果您想强制阶段始终成功,请在阶段的内容周围加上 try/catch 以判断任何错误。

    【讨论】:

      猜你喜欢
      • 2014-07-18
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      相关资源
      最近更新 更多