在 Jenkins 声明式管道中实现我自己的“步骤”变体
Implementing my own variant of `steps` in Jenkins declarative pipeline
我想知道是否可以在 Jenkins 声明管道中创建我自己的 steps
变体,所以我可以说:
pipeline {
stages {
stage('Do work') {
stepsChuckNorrisWrote {
...
}
}
}
}
我正在寻找的是一种编写步骤的优雅方式,即使构建失败也不会导致构建失败。
我不知道有什么方法可以完全按照您的意愿行事,但我认为您可以做一些让您达到 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
}
}
}
使用此方法,一旦第一步失败,其他 none 步将继续。可能有一些方法可以将每个步骤从闭包中拉出来,并基本上将其包装在 try/catch 中,但我不知道如何做这样的事情。
我想知道是否可以在 Jenkins 声明管道中创建我自己的 steps
变体,所以我可以说:
pipeline {
stages {
stage('Do work') {
stepsChuckNorrisWrote {
...
}
}
}
}
我正在寻找的是一种编写步骤的优雅方式,即使构建失败也不会导致构建失败。
我不知道有什么方法可以完全按照您的意愿行事,但我认为您可以做一些让您达到 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
}
}
}
使用此方法,一旦第一步失败,其他 none 步将继续。可能有一些方法可以将每个步骤从闭包中拉出来,并基本上将其包装在 try/catch 中,但我不知道如何做这样的事情。