J'ai du mal à utiliser Jenkins + Gerrit.
Voici ce que j'ai eu jusqu'à présent:
La configuration de Gerrit Trigger dans Jenkins semble être correcte: lorsque j'applique un nouveau jeu de modifications, la construction de Jenkins est lancée.
J'ai utilisé ceci: Jenkins: paramètres pour les problèmes de Gerrit Trigger Pour pouvoir également le lancer "manuellement".
En ce qui concerne ma configuration, j’ai Quelque chose comme ceci: https://stackoverflow.com/a/18347982/2248987 . Le spécificateur de branche est $ GERRIT_BRANCH et la spécification de référence est $ GERRIT_REFSPEC
Gerrit et Git travaillent seuls sur des amendes. L'accès semble bien aussi.
Voici mon problème. Lors de la construction (déclenchée par gerrit ou manuellement), la sortie du journal est:
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.Origin.url ssh://user@Host:29418/testproject # timeout=10
Fetching upstream changes from ssh://user@Host:29418/testproject
> git --version # timeout=10
using GIT_SSH to set credentials
> git -c core.askpass=true fetch --tags --progress ssh://user@Host:29418/testproject refs/heads/master
> git rev-parse Origin/$GERRIT_BRANCH^{commit} # timeout=10
> git rev-parse $GERRIT_BRANCH^{commit} # timeout=10
ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.
Finished: FAILURE
Je suis coincé avec ce message, essayé avec le dépôt vide, les non-vides, et aussi avec ou sans changeset "en revue"
J'avais ce problème et je pense l'avoir corrigé maintenant, je blâme l'interface utilisateur de Jenkins pour avoir masqué certains éléments de configuration essentiels;)
Voici la sortie de ma construction Jenkins avant le correctif:
Triggered by Gerrit: https://bbpcode.epfl.ch/code/15056
[EnvInject] - Loading node environment variables.
Building remotely on rh6.6-02 (AMD64-RedHatEnterpriseServer 6.6 RedHatEnterpriseServer AMD64-RedHatEnterpriseServer-6.6 rh6.x RedHatEnterpriseServer-6.6 AMD64) in workspace /var/tmp/jenkins/workspace/datamining.nip-commons.gerrit
> /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> /usr/bin/git config remote.Origin.url ssh://bbpcode.epfl.ch/datamining/nip-commons # timeout=10
Fetching upstream changes from ssh://bbpcode.epfl.ch/datamining/nip-commons
> /usr/bin/git --version # timeout=10
> /usr/bin/git fetch --tags --progress ssh://bbpcode.epfl.ch/datamining/nip-commons +refs/heads/*:refs/remotes/Origin/*
> /usr/bin/git rev-parse 74e4ff18f54bd6e046f7af016614193f566adfe4^{commit} # timeout=10
ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
Finished: FAILURE
SOLUTION
Vous devrez ouvrir votre configuration de construction et aller à la section 'Gestion du code source' comme indiqué ci-dessous:
Maintenant, vous remarquerez qu'il y a un bouton 'Avancé', cliquez dessus pour afficher les champs supplémentaires comme ci-dessous:
Vous pouvez maintenant taper votre refspec ici: $ GERRIT_REFSPEC
Désormais, relancez une génération ayant échoué ou abandonnez les révisions et envoyez-en une nouvelle. Elle devrait fonctionner.
Voici le résultat du travail de Jenkins maintenant que nous avons le refspec approprié:
Retriggered by user kerrien for Gerrit: https://bbpcode.epfl.ch/code/15056
[EnvInject] - Loading node environment variables.
Building remotely on rh6.6-02 (AMD64-RedHatEnterpriseServer 6.6 RedHatEnterpriseServer AMD64-RedHatEnterpriseServer-6.6 rh6.x RedHatEnterpriseServer-6.6 AMD64) in workspace /var/tmp/jenkins/workspace/datamining.nip-commons.gerrit
> /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> /usr/bin/git config remote.Origin.url ssh://bbpcode.epfl.ch/datamining/nip-commons # timeout=10
Fetching upstream changes from ssh://bbpcode.epfl.ch/datamining/nip-commons
> /usr/bin/git --version # timeout=10
> /usr/bin/git fetch --tags --progress ssh://bbpcode.epfl.ch/datamining/nip-commons refs/changes/56/15056/2
> /usr/bin/git rev-parse 74e4ff18f54bd6e046f7af016614193f566adfe4^{commit} # timeout=10
Checking out Revision 74e4ff18f54bd6e046f7af016614193f566adfe4 (dev)
> /usr/bin/git config core.sparsecheckout # timeout=10
> /usr/bin/git checkout -f 74e4ff18f54bd6e046f7af016614193f566adfe4
> /usr/bin/git rev-parse FETCH_HEAD^{commit} # timeout=10
> /usr/bin/git rev-list 2649d51369413cef4dfb7ec50939945005514cfa # timeout=10
Cleaning workspace
> /usr/bin/git rev-parse --verify HEAD # timeout=10
Resetting working tree
> /usr/bin/git reset --hard # timeout=10
> /usr/bin/git clean -fdx # timeout=10
Triggering datamining.nip-commons.gerrit » default
datamining.nip-commons.gerrit » default completed with result SUCCESS
Started calculate disk usage of build
Finished Calculation of disk usage of build in 2 second
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
Finished: SUCCESS
Après avoir beaucoup lutté et gardé un œil sur le journal, j'ai finalement trouvé la solution.
C'est une erreur de configuration que nous avons tous faite. Une fois cochée case à cocher Ce projet est paramétré La configuration ci-dessous doit être effectuée
Ici, j'ai nommé le paramètre name sous la forme branchgit Maintenant, dans la gestion du code source, nous devons nous concentrer sur Les branches pour construire dont la valeur ne devrait être que "$ branchgit" comme indiqué dans l'image ci-dessous
Vous pouvez essayer de configurer comme ça
Suivez la configuration complète ici
Si vous cliquez sur "Build Now} _", Jenkins ne pourra pas obtenir de sources car $ GERRIT_REFSPEC n'existe pas dans ce cas.
Remplacez $GERRIT_BRANCH
par $GERRIT_REFSPEC