Obtenir le nom de la branche git dans Jenkins Jenkinsfile

j'ai créé un pipeline jenkins et il tire le script du pipeline de scm.

J'ai défini la branche spécificateur de 'all', de sorte qu'il s'appuie sur tout changement à n'importe quelle branche.

Comment puis-je accéder au nom de la branche à l'origine de cette compilation à partir du fichier Jenkinsfile?

Tout ce que j'ai essayé echos nulles à l'exception de

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

toujours master.

22
demandé sur Vadim Kotov 2017-02-22 08:18:40

4 réponses

si vous avez un fichier jenkinsfile pour votre pipeline, vérifiez si vous voyez au moment de l'exécution votre nom de branche dans votre variables d'environnement.

Vous pouvez les imprimer avec:

pipeline {
    agent any

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

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

Cependant, PR 91 montre que le nom de la branche n'est défini que dans certaines configurations de pipeline:

6
répondu VonC 2017-02-22 07:51:06

utiliser un pipeline à plusieurs branches.. pas pipeline!--3-->

Dans mon script..

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

    }
}

les Rendements...

Pulling...master
13
répondu James 2017-05-14 10:47:54

le passage à un pipeline à plusieurs branches m'a permis d'accéder au nom de la branche. Un pipeline régulier n'a pas été avisé.

5
répondu Alex Yurkowski 2017-02-22 07:40:30

Un collègue m'a dit d'utiliser scm.branches[0].name et ça a fonctionné. J'ai enveloppé à une fonction dans mon Jenkinsfile:

def getGitBranchName() {
    return scm.branches[0].name
}
5
répondu Attila123 2017-05-04 15:04:19