2012-06-20 5 views
32

Gerade installiert Jenkins in Ubuntu 12.04 und ich wollte einen einfachen Build erstellen, der nur ein Projekt klont und es erstellt.Jenkins + Git: "Sag mir, wer du bist" Fehler, warum muss es markieren?

Es schlägt fehl, weil es nicht markieren kann. Es kann nicht taggen, weil es "sag mir wer du bist" anscheinend irrt, weil ich Git Einstellungen UserName und UserEmail nicht gesetzt habe.

Aber ich sollte diese nicht setzen müssen, Jenkins wird nur das Repository klonen, warum benötigt es die Anmeldeinformationen, wenn es keine Änderungen pushen wird, warum muss es überhaupt ein Tag machen?

Vollfehlerprotokoll ist:

Started by user anonymous 
Checkout:workspace//var/lib/jenkins/jobs/Foo.Bar.Baz/workspace - [email protected] 
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 <[email protected](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 
+0

Huh! Nach der Konfiguration von user.name und user.E-Mail, der Build ist erfolgreich, aber es hat ein neues Tag im Server namens "1.0" erstellt, warum ist das Git-Plugin in der Standardkonfiguration so seltsam und wie konfiguriert man es so, dass es das nicht tut? – knocte

Antwort

37

Die Idee Tagging beim Ziehen/eines Repo-Klonen ist in den meisten Build-Scheduler da draußen:
Hudson-Jenkins, sondern auch CruiseControl (das Label Build bestimmt durch die labelincrementer) oder RTC Jazz Build Engine (where they are called "snapshots").

Die Idee ist, einen persistenten Datensatz des Eingangs zu einem Build zu setzen.
Auf diese Weise wird der Code, den Sie ziehen, auch wenn er nicht getaggt wurde, vom Build Scheduler automatisch für Sie markiert, um später zu diesem spezifischen Build zurückkehren zu können.

Wenn diese Politik (immer vor einem Build-Tagging) gesetzt, so Jenkins müssen wissen, wer Sie sind, um einen Git-Tag zu machen (es ist ein git Objekt mit einem Autor zu ihm angebracht: user.name und user.email) .

jedoch, wie in "Why hudson/jenkins tries to make commit? "erwähnt:

Checks" Skip internal tag" config unter "Advanced..." im Abschnitt "Source code management".

Das sollte diesen zusätzlichen Tagging-Schritt vermeiden, den Sie nicht benötigen.

enter image description here

+2

endlich! Vielen Dank VonC :) – knocte

+0

@knocte ja ... ich war ein bisschen langsam dabei;) – VonC

+0

Ich dachte, dass Screenshot bekannt vorkam :) – fijiaaron

0

Sie können SSH auch in Jenkins und navigieren Sie zu dem Arbeitsbereich Verzeichnis über, und dann können Sie nur die git config-user.name laufen und user.email Befehle normal.

+0

Ich kann SSH nicht in Jenkins aufgrund von Einschränkungen durch unser Server-Hosting. –

+0

Ich kann SSH, und Git in der Befehlszeile arbeiten, aber nicht in Jenkins. Lösung von @iecanfly scheint für mich zu arbeiten. –

17

Was, wie user.email und user.name zu setzen, In jenkins, gehen Sie auf "Manage Jenkins"> "Configure System" und scrollen Sie nach unten zu "Git-Plugin", und es finden Sie Git plugin screen shot

Geben Sie Ihre E-Mail-Adresse und Ihren Namen ein, und Sie können loslegen.

+2

Ich habe das eingestellt, aber es scheint nicht verwendet zu werden. –

+0

Eine alternative Option, wenn Sie eingeschränkten Jenkins-Administratorzugriff haben, wäre Hinzufügen von "Zusätzliches Verhalten" im Git-Plugin-Abschnitt der Jobkonfiguration. Sie können das zusätzliche Verhalten zum Hinzufügen eines benutzerdefinierten Benutzernamens/einer E-Mail-Adresse auswählen, die nur für Ihren Auftrag und nicht für eine globale Einstellung gelten. – bobbypavan

1

Ich habe die obige Lösung von iecanfly verwendet. Mit meinem git Benutzernamen und ein Passwort funktionierte nicht, ich eingegeben

Benutzername: jenkins

E-Mail: jenkins @ localhost

, dass das Problem behoben.

Verwandte Themen