如何从Jenkins管道中的函数返回一个'allOf'的值

时间:2018-06-15 14:33:31

标签: jenkins jenkins-pipeline

我们使用Jenkins文件设置Jenkins管道,以定义需要为不同构建做什么。

在我们的很多阶段,当我们要进行发布时,我们需要完成一些工作,但是如果不能完成发布,则可以跳过。

目前我们有这段代码:

when {
  allOf {
    anyOf {
      branch 'master';
      branch 'develop';
    }
    expression {
      return params.DBTESTS
    }
  }
}

在所有可以跳过的阶段重复。

我如何将其转换为函数,以便逻辑在一个类似于这样的地方:

def isReleasePlanned() {
   return  allOf {
      anyOf {
         branch 'master';
         branch 'develop';
      }
      expression {
        return params.DBTESTS
      }
    }
  }
}

然后像这样使用:

when {
  isReleasePlanned()
}

在每个阶段。目前,当Jenkins尝试读取Jenkins文件时,这是一个语法错误。

1 个答案:

答案 0 :(得分:1)

您可以尝试类似

的内容
def isReleasePlanned(branch, params){
    return branch ==~ "master|develop" && params.DBTESTS
}

pipeline {
...
   stages {
   ...
       stage("For release"){
           when {
               expression{ isReleasePlanned(GIT_BRANCH, params) }
           }
       }
   }
...
}

或者从自定义库中导出该函数。