我试图编写一个共享库来生成一个完整的管道,但是我很难将我的逻辑与管道DSL混合,所以我想完全绕过DSL,手动“组装”管道。
例如,将
def call() {
node {
stage("Hello world") {
echo "Hello world"
}
}
}
我很想做一些
def call() {
s = new Stage("Hello world")
s.addStep({echo "Hello world"}) // or maybe s.addStep(new EchoStep("Hello world"))
n = new Node()
n.addStage(s)
return n
}
有没有什么方法可以做到这一点?如果没有,有没有什么好的例子可以说明如何混合“插件时逻辑”(决定创建什么阶段以及它们应该有什么步骤)和“运行时逻辑”(如果文件存在,就做一些事情,如果测试失败,就做一些其他事情,等等)?
1条答案
按热度按时间px9o7tmv1#
你可以用groovy闭包来实现这一点,你可以在google上找到一堆例子,比如https://www.jenkins.io/doc/pipeline/examples/
基本概念是闭包是可运行的,可以作为参数传递。