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
.
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:
- Branche Conditionnelle (voir groovy script)
- branches parallèles pipeline (comme vu par l'OP)
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
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é.
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
}