Le plugin Git est installé (par défaut) dans mon Jenkins mais je ne parviens pas à obtenir les variables env qui sont supposées être transmises par le plugin Git. Je cherche:
GIT_COMMIT
GIT_BRANCH
GIT_PREVIOUS_COMMIT
GIT_PREVIOUS_SUCCESSFUL_COMMIT
GIT_URL
etc. J'utilise l'élément de travail de pipeline qui pointe vers un dépôt Github avec le fichier Jenkins avec le code suivant
stage 'PushToProd'
node {
git url: "https://github.com/username/fakeurl.git"
echo "Starting PushToProd"
sh 'printenv'
sh 'env'
sh 'echo $BRANCH_NAME'
sh 'echo $GIT_COMMIT'
}
Je reçois beaucoup de variables d'environnement lorsque j'utilise env
ou printenv
mais pas celles du plugin Github.
Avez-vous des conseils pour obtenir les variables Git env?
Update : Je peux facilement obtenir les variables d'environnement Git lorsque j'utilise un projet Freestyle et que l'étape Shell utilise echo $GIT_COMMIT
. Vous souhaitez toujours savoir comment le faire fonctionner à l'aide de l'élément de travail Jenkinsfile + Pipeline.
Cela ne fonctionnera pas à cause du manque de guillemets, de l'accolade manquante et de env.
:
sh 'echo $BRANCH_NAME'
Cela fonctionne comme prévu dans un fichier Jenkins:
node {
sh "echo ${env.BRANCH_NAME}"
}
Ainsi, quiconque est tombé par hasard sur ce problème de Stackoverflow devrait savoir qu'il s'agit d'un bug avec la situation actuelle du pipeline.
Beaucoup de discussions ici: https://issues.jenkins-ci.org/browse/JENKINS-35230
Essentiellement, le plug-in n'est pas en mesure d'ajouter correctement des variables d'environnement en raison de certaines incompatibilités avec le pipeline.
Ceci est corrigé dans Git plugin 3.3.1
Version 3.3.1 (23 juin 2017)
La plupart des exemples de pipeline que j'ai trouvés englobent le code dans une fermeture de "noeud", ce qui, pour une raison quelconque, ne permet pas au plug-in Jenkins Git de renseigner les variables d'environnement.
Cependant, si vous le placez comme ceci, les variables d’environnement sont définies correctement:
pipeline {
agent {
label ('<AGENT>')
}
stages {
stage('<STAGE>') {
steps {
<CODE>
}
}
}
}
Je ne sais pas quelles fermetures sont cruciales ici, mais cette mise en forme m'a permis d'accéder à des variables env telles que env.GIT_COMMIT
Vous devrez peut-être faire quelque chose comme ça.
node {
def branch = env.BRANCH_NAME
sh "My branch name: ${branch}"
}