如何测试使用分支名称的Jenkins管道(或其他jenkins脚本)?

时间:2019-01-03 00:58:21

标签: jenkins jenkins-pipeline

如果我有一个Jenkins管道脚本(尽管该原则实际上可以适用于任何Jenkins脚本),但根据要构建的分支,其行为各不相同,如何在不将其合并到该分支的情况下测试其是否正常工作?在管道脚本中,已使用branch关键字以及通过测试env.BRANCH_NAME对其进行了测试。我认为后者可能是您可以以某种方式覆盖的东西,但我可以看到。

请澄清一下,我将这个放在我的Jenkinsfile的顶部:

def isSpecialBranch = env.BRANCH_NAME ==~ *reg-ex*

另外,还有许多具有

的节点
when { 
    branch 'xxxxx'
}

基本上,我想测试将更改合并到适合该模式的分支名称后,管道是否可以正常工作。

2 个答案:

答案 0 :(得分:1)

您可以使用Jenkins Pipeline Unit模拟分支。

您甚至可以嘲笑Jenkins variables之类的东西。

无论如何,编写when表达式的正确方法是这样的(例如,与master匹配):

when {
       expression { (branch == 'origin/master') }
}

或(例如匹配开发,功能或修补程序)

when {
     expression { (branch == 'origin/develop' || branch.matches('origin\\/(feature|hotfix)+\\/.*')) }
}

希望有帮助。

答案 1 :(得分:-1)

您可以尝试以下方法:

static def getBranchName(scm)
{
  return scm.branches[0].name
}

这需要以提升的特权运行,因此这是我的共享库中的Utilities类的一部分。