groovy函数返回的赋值不会停止构建

时间:2018-09-04 22:41:44

标签: groovy jenkins-pipeline jenkins-blueocean

我有一个返回错误代码(1)的常规函数​​。我不是要使用此返回值来执行某些操作,例如更新github上下文。

我有一个问题,除非在我的manager.build.@result = hudson.model.Result.FAILURE语句中使用else,否则该步骤不会显示错误。这样做会将步状态设置为错误,但不会在Blue Ocean中将命令设置为错误。

是否有一种更简单的方法来处理此用例,或者我遗漏了什么?

blue ocean states

这是一个简化的示例

Groovy文件

def foo() {
  def status_code = sh(
    script: "echo 1",
    returnStatus: true
  )
  echo "${status_code}" // displays 1
  return status_code
}

管道

stage() {
    steps {
        script {
            BUILD = foo()
            echo "${BUILD}" // displays 1
            if ("${BUILD}" == "0") {
                echo "build success"
            } else {
                echo "build failure" // I reach here
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

如果要显示错误并将构建标记为失败,则可以使用error步骤而不是echo

stage() {
    steps {
        script {
            BUILD = foo()
            echo "${BUILD}" // displays 1
            if ("${BUILD}" == "0") {
                echo "build success"
            } else {
                error "build failure" // I reach here
            }
        }
    }
}