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

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

隗高旻
2023-03-14

我已经创建了一个jenkins管道,它正在从scm中提取管道脚本
我将分支说明符设置为“all”,因此它基于对任何分支的任何更改。

如何从Jenkinsfile访问导致此构建的分支名称?

我试过的所有东西都是空的,除了

sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()

它始终是主。

共有3个答案

戚均
2023-03-14

一位同事告诉我使用scm。分支[0]。name,它成功了。我将其包装到Jenkinsfile中的一个函数中:

def getGitBranchName() {
    return scm.branches[0].name
}
滕学义
2023-03-14

如果您的管道有一个jenkins文件,请检查您是否在执行时在环境变量中看到您的分支名称。

您可以打印它们:

pipeline {
    agent any

    environment {
        DISABLE_AUTH = 'true'
        DB_ENGINE    = 'sqlite'
    }

    stages {
        stage('Build') {
            steps {
                sh 'printenv'
            }
        }
    }
}

然而,PR 91表明,分支名称仅在某些管道配置中设置:

  • 分支条件(请参阅此groovy脚本)
  • 平行分支管道(如OP所示)
齐铭
2023-03-14

使用多分支管道作业类型,而不是普通管道作业类型。多分支管道作业确实存在环境变量env。分支机构\描述分支机构的名称。

在我的脚本中。。

stage('Build') {
    node {
        echo 'Pulling...' + env.BRANCH_NAME
        checkout scm
        
    }
}

产量...

Pulling...master
 类似资料:
  • 问题内容: 我创建了一个詹金斯管道,它正在从scm中提取管道脚本。 我将分支说明符设置为“ ”,因此它基于对任何分支的任何更改。 如何从Jenkinsfile访问导致此生成的分支名称? 我尝试过的一切都呼应null 总是这样。 问题答案: 如果您的管道有jenkinsfile,请检查执行时是否在环境变量中看到分支名称。 您可以使用以下命令打印它们: 但是,PR 91显示仅在某些管道配置中设置了分支

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

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

  • 我需要知道我的Jenkins multibranch管道中正在构建哪个分支,以便它正确运行步骤。 我们将gitflow模式与用于创建工件的dev、release和master分支一起使用。dev分支自动部署,其他两个不自动部署。还有功能、错误修复和热修复分支。这些分支应该被构建,但不能产生工件。如果他们的代码有问题,应该使用它们来通知开发人员。 在标准构建中,我可以访问变量来知道正在构建哪个分支,

  • 我有一个Jenkins管道作业(不是多分支管道),管道内的逻辑之一是,当gitlab scm上有一个合并请求时,我想基于触发此生成的合并请求的源分支构建一些东西。 我的问题是,在Jenkinsfile中,我如何动态地获取这个源分支,签出代码,并创建一个工作区,以便在这个分支上运行构建?

  • 我在Jenkins中有一个多分支管道项目。我想在管道项目中列出分支时禁用它。我可以添加异常以超越scm触发。但是我想禁用所有触发,包括手动触发。如果我在为分支创建的作业中使用“构建触发器”下的“禁用此项目”,则在我重新加载页面时不会选择该选项(没有可用于单分支管道的保存/应用按钮)。它只保留在Jenkinsfile中配置的以下配置。 有没有办法在Jenkinsfile中指定“禁用此项目”