J'ai créé un pipeline jenkins qui extrait le script de pipeline de scm.
J'ai défini le spécificateur de branche sur 'all
', de sorte qu'il s'appuie sur toute modification apportée à une branche.
Comment puis-je accéder au nom de la branche à l'origine de cette construction à partir du fichier Jenkins?
Tout ce que j'ai essayé fait écho à null sauf
sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
qui est toujours master
.
Si vous avez un fichier jenkins pour votre pipeline, vérifiez si vous voyez au moment de l'exécution le nom de votre branche dans vos 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 indique que le nom de la branche n’est défini que dans certaines configurations de pipeline:
Utiliser un pipeline multibranch .. pas un pipeline
Dans mon script ..
stage('Build') {
node {
echo 'Pulling...' + env.BRANCH_NAME
checkout scm
}
}
Les rendements ...
Pulling...master
Un collègue m'a dit d'utiliser scm.branches[0].name
et cela a fonctionné. Je l'ai encapsulé dans une fonction de mon fichier Jenkins:
def getGitBranchName() {
return scm.branches[0].name
}
Le passage à un pipeline multibranches m'a permis d'accéder au nom de la branche. Un pipeline régulier n'a pas été conseillé.
Pour moi, cela a fonctionné: (avec Jenkins 2.150, avec un type de pipeline simple - pas multibranch, mon spécificateur de branche: 'Origine/branches **')
echo 'Pulling... ' + env.GIT_BRANCH
Sortie:
Pulling... Origin/myBranch
où myBranch est le nom de la branche de fonctionnalité
Obtenir le nom à partir de scm.branches
ne suffit pas si vous avez utilisé un paramètre de construction comme spécificateur de branche, par exemple. ${BRANCH}
. Vous devez développer cette chaîne en un vrai nom:
scm.branches.first().getExpandedName(env.getEnvironment())
Notez que getEnvironment()
doit être un getter explicite, sinon env
recherchera une variable d'environnement appelée environment .
N'oubliez pas que vous devez approuver ces méthodes pour les rendre accessibles à partir du bac à sable.