来自 groovy 函数 return 的赋值不会停止构建

assignment from groovy function return doesn't stop build

我有一个 groovy 函数 return 正在处理错误代码 (1)。我并没有尝试使用此 return 值来执行某些操作,例如更新 github 上下文。

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

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

这是一个简化的例子

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

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

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