3 votes

Intégration de Jenkins et Gerrit avec google repo scm

Je vous écris parce qu'il y a quelque chose qui n'est pas clair pour moi sur la façon de configurer Jenkins pour qu'il récupère de Gerrit les changements pour construire mon projet.

Il existe de nombreux tutoriels et exemples sur le net sur la façon de connecter tous ces morceaux de code. Mais je n'en ai trouvé aucun qui explique ce que je veux faire. Je pense que c'est possible mais... bon. Je ne suis pas sûr.

Mon installation : J'ai un manifeste repo qui contient un grand nombre de modules différents de l'application finale. L'application a été écrite de cette façon parce que je peux changer un module et le remplacer par un autre avec un code similaire qui fait un travail différent. Par exemple, ils peuvent être la personnalisation pour les différents clients.

J'ai mis en place un job dans Jenkins qui récupère chaque commit dans chaque sous-module.

J'ai connecté Jenkins à Gerrit et je peux démarrer la construction avec gerrit trigger.

Cela fonctionne et je peux construire mon maître et le maître actuel.

Mon problème est que lorsque j'envoie un patch pour révision, Jenkins construit le master, et non le patch que j'ai envoyé. Je voudrais tester le dernier patch avant de l'intégrer sur master.

Les modules ne peuvent pas être construits de manière autonome car ils sont tous connectés d'une manière ou d'une autre. Je ne peux donc pas vérifier chaque partie seule.

Quelqu'un a été capable d'accomplir quelque chose comme ça ?

1voto

Lorsque le déclencheur Gerrit lance le travail Jenkins, vous pouvez exécuter ce qui suit pour préparer l'espace de travail avant d'exécuter la construction :

  1. Utilisez "repo sync" pour vérifier tous les dépôts.
  2. Utilisez les variables env GERRIT_PROJECT et GERRIT_REFSPEC Gerrit Trigger et exécutez les commandes suivantes pour vérifier le patchset du dépôt modifié :

    cd $GERRIT_PROJECT

    git fetch https:// UTILISATEUR @ SERVER /a/$GERRIT_PROJECT $GERRIT_REFSPEC && git checkout FETCH_HEAD

    OU

    git fetch ssh:// UTILISATEUR @ SERVER :29418/$GERRIT_PROJECT $GERRIT_REFSPEC && git checkout FETCH_HEAD

0voto

La clé est de régler en conséquence les paramètres "Repositories" > "Advanced ". > "Refspec" et les champs "Branches à construire" > "Branch Specifier" : Job > Configurer > Gestion du code source > Git

Si vous voulez construire la branche "master", définissez :

Refspec = +refs/heads/master:refs/remotes/origin/master

Branch Specifier = refs/heads/master

Si vous voulez construire le patchset, définissez :

Refspec = $GERRIT_REFSPEC:$GERRIT_REFSPEC

Branch Specifieer = $GERRIT_REFSPEC

Cliquez sur le " ?" à droite du champ pour voir plus de détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X