干净的方式退出声明詹金斯管道成功?

Bar*_*akD 5 jenkins jenkins-pipeline jenkins-declarative-pipeline

我正在寻找退出声明性Jenkins管道的最简洁方法,具有成功状态.虽然使用错误步骤退出时出错,但我找不到任何与成功代码一样退出的方法.例如:

stage('Should Continue?') {
  when {
    expression {skipBuild == true }
  }
  steps {
    echo ("Skiped Build")
    setBuildStatus("Build complete", "SUCCESS");
    // here how can I abort with sucess code?
    // Error Would have been:
    // error("Error Message")

  }
}
stage('Build') {
  steps {
    echo "my build..."
  }
}
Run Code Online (Sandbox Code Playgroud)

对于带脚本化构建的示例,我可以使用以下代码实现它:

if (shouldSkip == true) {
  echo ("'ci skip' spotted in all git commits. Aborting.")
  currentBuild.result = 'SUCCESS'
  return
}
Run Code Online (Sandbox Code Playgroud)

虽然我知道能够在我的声明性pipieline中添加脚本步骤,但我希望找到一种更清洁的方式.

另一种方法可能是抛出错误并将其捕获到某个地方,但同样又非常混乱.

有更干净的方式吗?

Iva*_*van 7

对我有用的解决方案是创建一个带有子阶段的阶段,并将检查放在顶层阶段。

    stage('Run if expression ') {
        when {
            expression { skipBuild != true }
        }
        stages {
            stage('Hello') {
                steps {
                    echo "Hello there"
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以我把所有我想继续的阶段都放在这个阶段里。以及它之外的一切。在您的情况下,您可以将所有构建阶段放入带有何时检查的阶段中。