web-dev-qa-db-fra.com

Dans Hudson, comment puis-je obtenir le git commit de la version actuelle?

Nous utilisons Hudson avec git. Nous avons un serveur de compilation/test qui compile notre projet, puis un serveur d'assurance qualité sur lequel nous devons nous déployer.

Nous voulons obtenir la version actuelle de la commande commit git et l'utiliser pour extraire la validation appropriée pour le déploiement sur notre serveur d'assurance qualité. 

Malheureusement, il semble que le plugin hudon git ne configure pas le git commit sha dans les variables d'environnement (comme le fait le plugin svn dans SVN_REVISION, par exemple). Comment pouvons-nous contourner cela?

Pointeur/exemples seront utiles car je suis un hudson noob.

Merci

32

Ce n'est apparemment pas possible avec la version actuelle du plugin git. Au lieu de cela, nous écrivons la tête actuelle dans un fichier et l'enregistrons sous forme d'artefact. Nous pourrons plus tard le boucler et obtenir l'identifiant de commit correspondant à une construction donnée.

2
SharePoint Newbie

J'ai ajouté à la commande Post build: 

env

Dans le journal, j'ai trouvé toutes les variables d'environnement. Certains d'entre eux sont:

BUILD_TAG=jenkins-Datagen-17
JOB_URL=http://jenkins:18080/job/Datagen/
USER=jenkins
GIT_COMMIT=ce9a3c1404e8c91be604088670e93434c4253f03
JENKINS_HOME=/var/lib/jenkins
JOB_NAME=Datagen
BUILD_ID=2011-06-22_15-26-06
GIT_BRANCH=master
EXECUTOR_NUMBER=0
NODE_LABELS=master
LOGNAME=jenkins
NODE_NAME=master
BUILD_NUMBER=17
50
Andrzej Jozwik

Probablement assez tard, mais vous pouvez le faire sur jenkins en utilisant l'API:

https://jenkins-server/job/job-name/lastStableBuild/api/json

Cela donne un objet JSON que vous pouvez analyser. Vous pouvez également utiliser l'option tree pour obtenir une chaîne JSON plus précise. Quelque chose comme ça:

https://jenkins-server/job/job-name/lastStableBuild/api/json?tree=actions[lastBuiltRevision[branch[*]]]

Vous pouvez maintenant utiliser awk pour analyser les branches SHA1 et git.

4
Somaiah Kumbera

Vous pouvez ajouter une étape supplémentaire à votre travail Hudson, en publiant le git commit nouvellement créé sur un deuxième référentiel sur le serveur de construction/test.
Ce deuxième dépôt peut avoir un hook post-réception poussant automatiquement ledit commit sur le serveur QA.

Si vous ne voulez pas cette couche d'indirection supplémentaire, vous devez avoir, dans votre étape supplémentaire, les commandes git pour interroger le SHA1 de HEAD: git describe ou git rev-parse.
La question " Enregistrer Git SHA1 lors de la construction avec Hudson est similaire à la balise CVS_BRANCH pour CVS. "

3
VonC

Dans le travail Jenkin, vous pouvez utiliser la commande

git describe --always

Cela renverra les 7 premiers caractères du SHA

Cordialement

2
Daniel Labonté

Jenkins Version:2.46.2

Client Git:2.4.5

Les variables GIT suivantes sont disponibles en exécutant la commande env à partir d'une Shell.

  • GIT_BRANCH
  • GIT_COMMIT
  • GIT_PREVIOUS_COMMIT
  • GIT_PREVIOUS_SUCCESSFUL_COMMIT
  • GIT_URL

Donc, pour les réinjecter dans les variables d’environnement du Job, ajoutez Word env à la section Script Content ...

tl; dr

Job > Configure > Build Environment > Inject environment variables to the build process > Script Content

 Example

2
Nick Grealy

Il existe déjà une bonne solution dans un shell exécutable. Cette solution présente l’avantage de pouvoir être intégrée à la phase de construction à l’aide de scripts et non à la phase de post-génération. C’est expliqué ci-dessous. Voir https://stackoverflow.com/a/11837662/5842403

En fait, vous pouvez accéder aux informations avant la fin de la phase de construction en lisant/analysant le fichier ../builds/$BUILD_NUMBER/changelog.xml dans le dossier de construction. Ce fichier est créé avec le déclenchement de validation SVN/GIT et non avec la fin de la phase de construction ou post_build. Cela signifie que vous pouvez l'analyser au début de la phase de construction du même travail avec un script et insérer les données dans des variables env.

1
Joniale

Au lieu d'utiliser SVN_REVISION, vous pouvez utiliser $ GIT_COMMIT. donc env $ GIT_COMMIT prendra le dernier hachage de commit de Git en utilisant Jenkins.

0
Dilip