Jenkins Flux de travail de la Caisse d'Accéder BRANCH_NAME et GIT_COMMIT
Je n'arrive pas à extraire $GIT_COMMIT et $BRANCH_NAME à partir d'un Flux de travail de Jenkins Caisse étape.
Je voudrais être en mesure d'envoyer ces informations par le biais de mon Gradle scripts afin de les passer sur des sources externes telles que l'analyse Statique etc.
Actuellement j'essaie d'exécuter ceci:
checkout([$class: 'GitSCM', branches: [[name: '*/master']], userRemoteConfigs: [[credentialsId: '2b74a351-67d5-4d00-abd3-49842a984201', url: 'ssh://[email protected]:repo.git']]])
Et je voudrais atteindre les objectifs suivants ou quelque chose de similaire:
//Specified variables that can be reused
def branch = ${BRANCH_NAME}
def commit = ${GIT_COMMIT}
Ou peut-être que ce serait trop de travail:
print "BRANCH: ${BRANCH_NAME}, COMMIT: ${GIT_COMMIT}"
//or the following
print "BRANCH: ${env.BRANCH_NAME}, COMMIT: ${env.GIT_COMMIT}"
Je n'ai trouver le problème suivant qui semble être résolu, mais il ne fonctionne pas dans la version 1.15:
https://issues.jenkins-ci.org/browse/JENKINS-30252
N'importe qui ont des idées comment contourner ce problème ou si il y a une variable que je ne trouve pas?
OriginalL'auteur Oldek | 2016-03-30
Vous devez vous connecter pour publier un commentaire.
Tout d'abord,
n'est pas valide Groovy, ou au moins de ne pas faire ce que vous pensez. Peut-être que vous avez voulu dire
- ce qui pourrait être un drôle de manière d'écrire
De toute façon les variables d'environnement ne sont pas actuellement accessibles directement comme Groovy variables dans le Pipeline (il y a une proposition pour l'autoriser); vous devez utiliser la
env
variable globale:À partir de l'intérieur d'un processus externe, tel qu'un
sh
étape, il est en fait une variable d'environnement, de sorteœuvres (à noter que
'
signifie Groovy est pas d'interpolation de la variable).Maintenant, JENKINS-30252 faisait référence à multibranch projets. Si vous avez créé un Pipeline autonome de l'emploi, cette variable ne sera pas réglée.
De toute façon, dans votre cas, votre
checkout
étape est toujours de vérifier lamaster
branche. Si vous avez réellement un multibranch projet, votreJenkinsfile
devrait être à l'aide dequi va vérifier un commit sur la branche correcte (toujours à la correspondance de la révision de
Jenkinsfile
lui-même).À la validation de hachage, dans l'attente de JENKINS-26100 ce n'est pas disponible automatiquement, mais vous pouvez utiliser quelque chose comme
pour y accéder.
Comme pour le dernier paragraphe, voir la actuellement proposée syntaxe.
C'est très bon, cette nouvelle syntaxe est beaucoup plus lisible
"les variables d'environnement ne sont pas actuellement accessibles directement comme Groovy variables" avez-vous des références à l'appui, par Jenkins source?
Il dit aussi, "vous avez besoin d'utiliser l'env de variable globale". Ainsi, la variable d'environnement
BRANCH_NAME
peut être consulté à cette:env.BRANCH_NAME
(comme indiqué dans la réponse).OriginalL'auteur Jesse Glick
J'ai deux Jenkins instances.
Dans les deux cas,
GIT_COMMIT
etBRANCH_NAME
les variables d'environnement ne sont pas définis.Quand j'essaie de les obtenir à partir de la valeur de retour de
checkout()
appel, chaque instance se comporte différemment.Jenkins Exemple 1
Jenkins version: 2.46.1
"Pipeline: SCM Étape" plugin version: 2.5
En essayant d'accéder à la variable d'environnement comme expliqué dans la
checkout
la documentation échoue.scmVars
renvoie la valeur NULL, et l'accès àscmVars.GIT_BRANCH
échoue à l'exceptionjava.lang.NullPointerException: Cannot get property 'GIT_BRANCH' on null object
.J'ai donc dû effectuer les opérations suivantes dans l'ordre pour obtenir de la direction générale:
Jenkins Exemple 2
Jenkins version: 2.60.2
"Pipeline: SCM Étape" plugin version: 2.6
Dans ce cas, je pourrais faire ce qui suit avec succès:
Veuillez donc vérifier l'approche qui fonctionne pour votre instance Jenkins et l'utiliser.
OriginalL'auteur Antony
Si vous souhaitez accéder à la
BRANCH_NAME
de Jenkins de la variable d'environnement comme un script shell, utilisez l'extrait de code ci-dessous.sh 'echo Branch Name: $BRANCH_NAME'
La réponse doit être comme ci-dessous:
Branch Name: the_checkedout_branch
OriginalL'auteur Eazhilan Nagarajan