我需要在几个阶段之间共享一些代码,这也需要添加发布操作。要做到这一点,我想到了把一切的方法,该方法将被称为从有没有办法在声明式管道中以编程方式注入发布操作
pipeline {
stages {
stage('Some') {
steps {
script { commonCode() }
}
}
}
}
但是,我不知道我怎么会从commonCode
安装后的行动。文档没有提到一件事。查看代码,意味着这个DSL基本上只是在使用哈希映射,但我不知道是否有可能从该方法访问它并在运行中进行修改。
基本上我愿做这样的事情在commonCode
:
if (something) {
attachPostAction('always', { ... })
} else {
attachPostAction('failure', { ... })
}
,到目前为止工作的唯一的事情是,在commonCode
我做的:
try {
...
onSuccess()
} catch (e) {
onError()
} finally {
onAlways()
}
,但不知道是否有更优雅的方式...
我想我可能不清楚我的问题。我知道我可以在'steps'和'post'中使用步骤和其他方法(假设我在'script'中包装了一些方法)。我的问题是:我可以在“steps”中做些什么,它会以编程方式附加新的“post”动作。 –
啊......这不是我所理解的。很抱歉对于这个误会。我想知道是否可以使用散列或列表来存储您想要在后期运行的某些闭包,然后在到达时运行这些闭包。我会看看我以后能否搞砸。 –