Получить имя ветки git в Дженкинс Дженкинсфайл

Я создал конвейер Дженкинса, и он тянет сценарий конвейера из scm.
Я установил спецификатор ветви в 'all', поэтому он основывается на любом изменении любой ветви.

как получить доступ к имени ветви, вызывающей эту сборку из файла Jenkinsfile?

все, что я пробовал эхо из null, кроме

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

который всегда master.

4 ответов


Если у вас есть файл jenkinsfile для вашего конвейера, проверьте, видите ли вы во время выполнения свое имя ветви в своем переменные среды.

вы можете распечатать их с:

pipeline {
    agent any

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

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

однако, PR 91 показывает, что имя ветви задается только в определенных конфигурациях конвейера:


используйте многозаходный конвейер.. не трубопровод

в моем сценарии..

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

    }
}

дает...

Pulling...master

переход на производство многофилиальных позволило мне получить доступ к имени филиала. Регулярный трубопровод не был рекомендован.


коллега сказал мне, чтобы использовать scm.branches[0].name и это сработало. Я завернул его в функцию в моем Jenkinsfile:

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