10

我正在寻找以成功状态退出声明性 Jenkins 管道的最干净的方法。虽然使用error step以错误退出非常简洁,但我找不到任何相同的方式以成功代码退出。例如:

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

例如,使用脚本构建,我可以使用以下代码实现它:

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

虽然我知道向我的声明性管道添加脚本步骤的能力,但我希望找到一种更清洁的方法。

另一种方法可能是抛出一个错误并在某个地方捕获它,但它又很混乱。

有没有更清洁的方法?

4

1 回答 1

7

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

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

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

于 2018-07-17T00:19:31.307 回答