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

问题描述 投票:0回答:2

如果我有一个Jenkins管道脚本(虽然原理可以适用于任何Jenkins脚本),它具有不同的行为,具体取决于构建哪个分支,如何在不将其合并到该分支的情况下测试它是否正常工作?在管道脚本中,它使用branch关键字和测试env.BRANCH_NAME进行了测试。我认为后者可能会以某种方式覆盖,但我可以看到。

只是为了澄清一下,我把它放在Jenkinsfile的顶部:

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

此外,还有许多节点

when { 
    branch 'xxxxx'
}

基本上我想测试一旦将更改合并到一个适合该模式的分支名称,管道就会正常运行。

jenkins jenkins-pipeline
2个回答
1
投票

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

你甚至可以嘲笑Jenkins variables和那种东西。

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

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

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

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

希望能帮助到你。


-1
投票

你可以试试这个:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.