web-dev-qa-db-fra.com

Jenkins + git: erreur "dites-moi qui vous êtes", pourquoi a-t-il besoin de marquer?

Je viens d'installer Jenkins dans Ubuntu 12.04 et je voulais créer une construction simple qui clone simplement un projet et le construit.

Il échoue car il ne peut pas baliser. Il ne peut pas marquer car il se trompe en disant "dites-moi qui vous êtes" apparemment parce que je n'ai pas défini les paramètres git UserName et UserEmail.

Mais, je ne devrais pas avoir besoin de les définir, Jenkins va simplement cloner le référentiel, pourquoi a-t-il besoin des informations d'identification s'il ne veut pas pousser les modifications, pourquoi doit-il faire une balise?

Le journal des erreurs complet est:

Started by user anonymous
Checkout:workspace / /var/lib/jenkins/jobs/Foo.Bar.Baz/workspace - hudson.remoting.LocalChannel@38e609c9
Using strategy: Default
Cloning the remote Git repository
Cloning repository Origin
Fetching upstream changes from [email protected]:foo-bar-baz/foo-bar-baz.git
Seen branch in repository Origin/1.0
Seen branch in repository Origin/1.5.4
Seen branch in repository Origin/HEAD
Seen branch in repository Origin/master
Commencing build of Revision 479d37776b46283a946dd395c1ea78f18c0b97c7 (Origin/1.0)
Checking out Revision 479d37776b46283a946dd395c1ea78f18c0b97c7 (Origin/1.0)
FATAL: Could not apply tag jenkins-Foo.Bar.Baz-2
hudson.plugins.git.GitException: Could not apply tag jenkins-Foo.Bar.Baz-2
at hudson.plugins.git.GitAPI.tag(GitAPI.Java:737)
at hudson.plugins.git.GitSCM$4.invoke(GitSCM.Java:1320)
at hudson.plugins.git.GitSCM$4.invoke(GitSCM.Java:1268)
at hudson.FilePath.act(FilePath.Java:758)
at hudson.FilePath.act(FilePath.Java:740)
at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:1268)
at hudson.model.AbstractProject.checkout(AbstractProject.Java:1193)
at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.Java:565)
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.Java:453)
at hudson.model.Run.run(Run.Java:1376)
at hudson.matrix.MatrixBuild.run(MatrixBuild.Java:220)
at hudson.model.ResourceController.execute(ResourceController.Java:88)
at hudson.model.Executor.run(Executor.Java:175)
at hudson.model.OneOffExecutor.run(OneOffExecutor.Java:66)
Caused by: hudson.plugins.git.GitException: Command "git tag -a -f -m Jenkins Build #2 jenkins-Foo.Bar.Baz-2" returned status code 128:
stdout: 
stderr: 
*** Please tell me who you are.

    Run

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: empty ident  <jenkins@somehostname.(none)> not allowed

    at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.Java:786)
    at hudson.plugins.git.GitAPI.launchCommand(GitAPI.Java:748)
    at hudson.plugins.git.GitAPI.launchCommand(GitAPI.Java:758)
    at hudson.plugins.git.GitAPI.tag(GitAPI.Java:735)
    ... 13 more
37
knocte

L'idée de baliser lors de l'extraction/du clonage d'un référentiel est courante dans la plupart des planificateurs de build:
Hudson-Jenkins, mais aussi CruiseControl (L'étiquette de build déterminée par labelincrementer), ou RTC Jazz Build Engine (où ils sont appelés "snapshots") ") .

L'idée est de définir un enregistrement persistant de l'entrée dans une génération.
De cette façon, le code que vous extrayez, même s'il n'a pas été balisé, est balisé automatiquement pour vous par le planificateur de build, afin de pouvoir revenir à cette build spécifique plus tard.

Si cette politique (toujours balisant avant une build) est définie, Jenkins devra savoir qui vous êtes pour créer une balise git (c'est un objet git auquel un auteur est attaché: user.name et user.email).

Cependant, comme mentionné dans " Pourquoi hudson/jenkins essaie de faire un commit? ":

Vérifie "Skip internal tag "config sous" Advanced..." dans la section "Source code management ".

Cela devrait éviter cette étape de marquage supplémentaire dont vous ne semblez pas avoir besoin.

enter image description here

37
VonC

Quant à la façon de définir user.email et user.name, dans jenkins, allez dans "Gérer Jenkins"> "Configurer le système" et faites défiler jusqu'à "Git plugin" et vous y trouverez Git plugin screen shot

entrez votre e-mail et votre nom, vous êtes prêt à partir.

23
iecanfly

J'ai utilisé la solution ci-dessus par iecanfly. L'utilisation de mon nom d'utilisateur et de mon mot de passe git n'a pas fonctionné, j'ai saisi

nom d'utilisateur: jenkins

courriel: jenkins @ localhost

Cela a résolu le problème.

2
diptia

Vous pouvez également SSH dans Jenkins et naviguer vers le répertoire de l'espace de travail, puis vous pouvez simplement exécuter les commandes git config user.name et user.email normalement.

1
Kvass

Si vous exécutez Jenkins dans un conteneur Docker, vous devrez exécuter dans le conteneur docker exec -it <CONTAINER_ID> sh puis exécutez les commandes git suggérées avec votre adresse e-mail et votre nom.

0
Ogala