如果我有一个Jenkins管道脚本(尽管该原则实际上可以适用于任何Jenkins脚本),但根据要构建的分支,其行为各不相同,如何在不将其合并到该分支的情况下测试其是否正常工作?在管道脚本中,已使用branch
关键字以及通过测试env.BRANCH_NAME对其进行了测试。我认为后者可能是您可以以某种方式覆盖的东西,但我可以看到。
请澄清一下,我将这个放在我的Jenkinsfile的顶部:
def isSpecialBranch = env.BRANCH_NAME ==~ *reg-ex*
另外,还有许多具有
的节点when {
branch 'xxxxx'
}
基本上,我想测试将更改合并到适合该模式的分支名称后,管道是否可以正常工作。
答案 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类的一部分。