在Jenkins声明性管道中实现我自己的`steps`变体

时间:2017-10-19 14:26:43

标签: jenkins groovy jenkins-pipeline jenkins-groovy

我想知道是否可以在Jenkins声明性管道中创建我自己的add_result变体,所以我可以说:

steps

我正在寻找的是一种优雅的编写步骤,即使失败也不会导致构建失败。

1 个答案:

答案 0 :(得分:1)

我不知道有什么方法可以做到你想要的,但我认为你可以做一些能让你获得75%-100%的东西(取决于你发生错误时后期步骤会发生什么)使用共享库:

pipeline {
  stages {
    stage('Do work') {
      steps {
          stepsChuckNorrisWrote {
        ...
          }
      }
    }
  }
}

然后在名为stepsChuckNorrisWrote的共享库中创建一个全局变量。你在这里传递一个闭包。该闭包可以包含您想要的所有步骤。在try / catch中包装该闭包的执行,不要让它失败。

这样的事情:

// vars/stepsChuckNorrisWrote.groovy
def call(Closure body) {
    node('windows') {
        try {
            body()
        } catch ( all ) {
            // handle errors here
        }
    }
}

使用此方法,只要第一步失败,其他任何一个都不会继续。可能有一些方法可以将每一步从闭包中拉出来并基本上将它包装在try / catch中,但我不知道如何做这样的事情。