当前位置: 首页 > 知识库问答 >
问题:

Jenkins多分支管道的分支名称变量是什么?

欧奇希
2023-03-14

我需要知道我的Jenkins multibranch管道中正在构建哪个分支,以便它正确运行步骤。

我们将gitflow模式与用于创建工件的dev、release和master分支一起使用。dev分支自动部署,其他两个不自动部署。还有功能、错误修复和热修复分支。这些分支应该被构建,但不能产生工件。如果他们的代码有问题,应该使用它们来通知开发人员。

在标准构建中,我可以访问$GIT_BRANCH变量来知道正在构建哪个分支,但该变量没有在我的多分支管道中设置。我也尝试了env.GIT_BRANCH,我尝试将$GIT_BRANCH作为构建的参数传递。似乎没有什么工作。我假设既然构建知道正在构建的分支(我可以在控制台输出的顶部看到分支名称),那么我可以使用一些东西——我只是找不到任何对它的引用。

共有3个答案

岳华灿
2023-03-14

Jenkins多分支管道作业中需要考虑两个分支:

  1. 詹金斯就业分部-env。分支机构名称。这可能与git分支同名,但也可能被称为PR-123或类似

因此,一个工作可能有BRANCH_NAME=PR-123和GIT_BRANCH=my-scm分支名称

林威
2023-03-14

<罢工> 目前还没有专门用于此目的的变量( JENKINS-30252)。同时,您可以利用子项目名称取自分支名称的事实,并使用

env.JOB_NAME.replaceFirst('.+/', '')

这一问题现在已经解决,请参阅Krzysztof Krasoń的回答。

岳浩
2023-03-14

环境。BRANCH_NAME变量包含分支名称。

对于Pipeline Groovy插件2.18,您也可以只使用分支名称(env不是必需的,但仍然可以接受)

 类似资料:
  • 问题内容: 我是Jenkins Pipeline插件的新手,尤其是多分支管道插件的新手。在标准构建中,我可以访问$ GIT_BRANCH变量以了解正在构建哪个分支。但是,该变量未在多分支管道中设置。我也尝试过env.GIT_BRANCH,并且尝试将$ GIT_BRANCH作为参数传递给构建。似乎没有任何作用。我以为既然构建知道构建的分支(我可以在控制台输出的顶部看到分支名称,可以使用某些东西,但是

  • 对于一个新项目,我想使用Jenkins CI的新管道功能。我们的Git存储库中有几个分支,应该以同样的方式进行测试。它还应该自动跟踪和处理新的分支。因此,我创建了一个多分支管道作业。但它的配置有两个问题: 1) 为了被Jenkins标记为有效,分行需要一个“Jenkinsfile”。如果这不存在,詹金斯将忽略该分支。有没有办法标记与模式匹配的所有分支,而不需要在其中包含此文件? 2) 每个分支都应

  • 问题内容: 我正在尝试为jenkins groovy脚本获取分支的名称。我无法获取当前的分支名称。我尝试以下方法: 这是输出-它始终返回null。 我想念什么吗? 问题答案: 此变量仅在多分支管线中起作用: BRANCH_NAME对于多分支项目,此名称将设置为正在构建的分支的名称,例如,如果您希望从主分支而不是功能分支部署到生产中。 我在正常的管道中进行测试

  • 我对使用Jenkins文件和GIT插件的Jenkins多分支pipleline有一个问题。 问题是,每次向暂存分支推送都会触发master管道。所需的行为是,推送到暂存分支仅触发用于暂存的管道,而推送到主分支仅触发主管道 这是我的詹金斯档案 我将分享一些日志:这是主分支的日志 这是主分支的日志,但只有暂存有一个新的提交: 注意“已发现更改”,即使主分支上的头未更改 詹金斯·弗。2.190.1 Gi

  • 我正在努力使用Jenkins 2.1多分支管道,在这里,我从同一个git存储库构建了多个工件。一些工件是独立的,应该根据它们各自目录中的更改触发构建。有些是依赖的,应该由先前的步骤/构建触发。 存储库有一个控制整个管道的文件。Jenkins多分支管道作业会在所有更改时触发(无其他行为)。 我不知道如何在目录dirA发生变化时触发工件A的构建。 git回购协议中的Jenkins文件file:///r

  • 我已经创建了一个jenkins管道,它正在从scm中提取管道脚本 我将分支说明符设置为“all”,因此它基于对任何分支的任何更改。 如何从Jenkinsfile访问导致此构建的分支名称? 我试过的所有东西都是空的,除了 它始终是主。