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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何测试使用分支名称的Jenkins管道(或其他jenkins脚本)?相关的知识,希望对你有一定的参考价值。

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

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

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

此外,还有许多节点

when { 
    branch 'xxxxx'
}

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

答案

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

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

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

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

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

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

希望能帮助到你。

另一答案

你可以试试这个:

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

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

以上是关于如何测试使用分支名称的Jenkins管道(或其他jenkins脚本)?的主要内容,如果未能解决你的问题,请参考以下文章

在 Jenkins Pipeline/Jenkinsfile 中获取 git 分支名称

Jenkins多分支管道脚本

获取已推送更改的已更改分支的名称,Jenkins管道脚本

如何让通用 Webhook 触发器插件与 Jenkins 中的多分支管道一起使用?

如何确定一个分支是不是是 jenkins 文件中的默认分支?

在 Jenkins 中使用多分支管道“定期构建”