【发布时间】:2021-01-08 22:52:45
【问题描述】:
我创建了一个管道函数来重试阶段 3 次:
def restart(body){
retry(3){
body()
}
}
我这样称呼它:
def prepareStage(accountName, slave_tag) {
return {
restart(){
node(slave_tag){
stage("${target} ${accountName}") {
build job: "pipelines/${accountName}/${env.BRANCH_NAME}"
}
}
}
}
}
它工作正常,但现在我想传递另一个变量“重试”来决定它是否应该重试 3 次,如下所示:
def restart(body, retries){
if (retries == false){
body()
}
else {
retry(3){
body()
}
}
}
def prepareStage(accountName, slave_tag, retries) {
return {
restart(retries){
node(slave_tag){
stage("${target} ${accountName}") {
build job: "pipelines/${accountName}/${env.BRANCH_NAME}"
}
}
}
}
}
但我不断收到“没有这样的 DSL 方法重启”
【问题讨论】:
-
我无法重现您收到的错误消息,但我注意到另一个错误。您需要将输入参数的顺序更改为
restart。retries应该是第一个,body应该是第二个,这取决于你调用函数的方式。 -
解决了,谢谢@Vasiliki Siakka。我只需要反转到这个“def restart(retries, body)”
标签: jenkins groovy jenkins-pipeline