首页 文章

Jenkins Multibranch管道:什么是分支名称变量?

提问于
浏览
38

我是Jenkins Pipeline插件的新手,尤其是multibranch管道插件的新手 . 在标准版本中,我可以访问$ GIT_BRANCH变量来了解正在构建的分支 . 但是,该变量未在multibranch管道中设置 . 我也尝试了env.GIT_BRANCH,并尝试将$ GIT_BRANCH作为参数传递给构建 . 似乎没什么用 . 我假设,因为构建知道正在构建的分支(我可以看到控制台输出顶部的分支名称,我可以使用的东西,我只是找不到任何引用它 .

这是一个为什么这很重要的例子 . 我们正在使用gitflow模式 . 我们有dev,release和master分支,它们都用于创建工件 . dev分支自动部署,另外两个没有 . 还有功能,错误修复和修补程序分支 . 应该构建这些分支,但不会产生伪像 . 如果他们的代码有问题,他们应该只是用来通知开发人员 . 我需要知道正在构建哪个分支才能运行正确的步骤 .

任何帮助,将不胜感激 .

3 回答

  • 10

    env.BRANCH_NAME 变量包含分支名称 .

    Pipeline Groovy Plugin 2.18开始,您也可以使用 BRANCH_NAMEenv 不是必需的,但仍然可以使用 . )

  • 1

    目前还没有专用变量(JENKINS-30252) . 在此期间,您可以利用子项目名称取自分支名称并使用的事实
    env.JOB_NAME.replaceFirst(' . /','')

    现在已经解决了这个问题,请参见Krzysztof Krasoń's answer .

  • 67

    我发现这个stackoverflow post示例很有用:Git Variables in Jenkins Workflow plugin

    sh '//...
        git rev-parse --abbrev-ref HEAD > GIT_BRANCH'
        git_branch = readFile('GIT_BRANCH').trim()
        echo git_branch
        //...
       '
    

相关问题