Ich habe das Git-Repository in Jenkins über Git/SSH unter Windows 2008 32-Bit erfolgreich geklont. Wenn ich versucht habe, dasselbe auf Windows 2008 64-Bit zu tun, bleibt die Seite Console Output hier hängen:
Démarré par l'utilisateur anonymous
Checkout:book / C:\Jenkins\workspace\book - [email protected]
Using strategy: Default
Last Built Revision: Revision 5d7ce4ae23c91fb201ee005e6db17bcd795ca965 (Origin/HEAD, Origin/master)
Checkout:book / C:\Jenkins\workspace\book - [email protected]
Cloning the remote Git repository
Cloning repository Origin
Wenn ich den Build stoppe (nachdem ich einige Minuten dort stecken geblieben bin), erhalte ich den Rest der Fehlermeldung:
ERROR: Error cloning remote repo 'Origin' : Could not clone [email protected]:zeljkofilipin/watirbook.git
ERROR: Cause: Error performing command: C:\Git\bin\git.exe clone --progress -o Origin [email protected]:zeljkofilipin/watirbook.git C:\Jenkins\workspace\book
null
Trying next repository
ERROR: Could not clone repository
FATAL: Could not clone
hudson.plugins.git.GitException: Could not clone
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:1042)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:968)
at hudson.FilePath.act(FilePath.Java:785)
at hudson.FilePath.act(FilePath.Java:767)
at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:968)
at hudson.model.AbstractProject.checkout(AbstractProject.Java:1193)
at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.Java:567)
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.Java:455)
at hudson.model.Run.run(Run.Java:1404)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.Java:46)
at hudson.model.ResourceController.execute(ResourceController.Java:88)
at hudson.model.Executor.run(Executor.Java:230)
git://github.com/zeljkofilipin/watirbook.git
von Jenkins auf beiden Maschinen klonen[email protected]:zeljkofilipin/watirbook.git
klonenDer einzige Unterschied, den ich zwischen den beiden Maschinen feststellen kann (nicht zu berücksichtigen, dass eine virtuelle Maschine auf meinem Laptop und eine andere in der Schweiz eine echte Maschine ist), besteht darin, dass die erste 32-Bit und die zweite 64-Bit ist.
Nicht sicher, ob dies in Beziehung stehen könnte, aber für den 32-Bit-Computer wurde der Standort auf Kroatien und der 64-Bit-Computer für die Schweiz festgelegt (wie Sie der Git-Ausgabe in Französisch entnehmen können).
Weitere Informationen finden Sie in meinem Blogbeitrag: Jenkins, Windows und Git
Ich habe diese Schmerzen in letzter Zeit durchgemacht. Besonders frustrierend ist das Fehlen von Fehlerprotokollen in diesem Szenario: Wahrscheinlich, weil MSysgit den Benutzer auf der Konsole beim Wiederherstellungsversuch auffordert, was die Jenkins-Konsole nicht durchläuft.
Basierend auf meiner Erfahrung sind hier ein paar Schlüsselelemente, auf die Sie achten sollten:
<MSYSGIT_ROOT>\cmd\git.cmd
als <MSYSGIT_ROOT>\bin\git.exe
HOME
Variable für Windows-Slavesgit clone
in einem Buildschritt "Shell/Batch ausführen" auszuführen. Das sollte ein bisschen mehr Infos zeigen. Übrigens, Sie können im selben Schritt eine env
und vielleicht ls %HOME%/.ssh
Ich denke, das ist das, was mir einen funktionierenden Windows 7 64bit Jenkins Slave mit Git-Unterstützung gab - obwohl ich dachte, dass dies eher mit anderen feinen Konfigurationsdetails als mit 64 vs. 32 Bits zu tun hatte. Viel Glück trotzdem!
In der neuesten Version von git musste% GIT_HOME%/cmd/git.exe anstelle von% GIT_HOME%/bin/git.exe verwendet werden und das Home-Verzeichnis des Benutzers ermittelt werden, der den jenkins-Dienst ausführt.
Ein anderes Problem, mit dem ich konfrontiert war, war, dass ssh.exe den %userprofile%/.ssh
-Ordner nicht nach den Schlüsseldateien suchte. Stattdessen wurde nach dem Ordner C:\Program Files (x86)\Git\.ssh
gesucht, der leer war und aufgrund der ssh-Authentifizierungsaufforderung auf dem Computer, auf dem sich git repo befand, ein Absturz verursacht.
Wir haben gerade die Schlüsseldateien unter %userprofile%/.ssh
in C:\Program Files (x86)\Git\.ssh
kopiert und das Problem ist behoben.
Anmerkungen aus einer hart erlernten Lektion ... Ich hatte Probleme, die ssh mit Jenkins als benanntes Benutzerkonto für ssh + git auszuführen.
Folgendes musste ich tun, um das Problem zu lösen:
Ich habe mit puttygen und GET_SSH = plink versucht, dass alles sehr schlecht ausgefallen ist, aber keine klaren Fehler.
Da mein Windows Jenkins ein Slave war, musste ich diesen Knoten so konfigurieren, dass er das Git in cmd anstelle von bin findet, wie von inger beschrieben. Gehen Sie dazu zu Jenkins verwalten, Knoten verwalten, klicken Sie auf den entsprechenden Knoten, klicken Sie auf Konfigurieren, und wechseln Sie zu den Werkzeugspeicherorten. Suchen Sie nach git in der Dropdown-Liste und geben Sie dann den Pfad zu git.exe (einschließlich git.exe) an, beispielsweise C:\Programme\Git\cmd\git.exe.
Ich bestätigte, dass cmd/git.exe in beiden Befehlszeilen anders funktioniert als bin/git.exe und mit einem temporären Jenkins-Job mit dem Befehl git (anstelle eines scm-Repos).
https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin
Fügen Sie einfach eine ssh-aktivierte Benutzeranmeldung bei Jenkins hinzu, und es sollte reibungslos funktionieren.
Wenn Sie Konfigurationsoptionen aus einer benutzerspezifischen Konfigurationsdatei verwenden müssen, z. ~/.ssh/config Sie können sie unter C:\Programme (x86)\Git\etc\ssh\ssh_config ablegen. Die Schlüsseldateien können unter C:\Program Files (x86)\Git.ssh abgelegt werden
Wenn Ihr Konto mit der Domäne verbunden ist. Dann müssen Sie sicherstellen, dass der Benutzer, für den der Jenkins Slave läuft, läuft. Zu diesem Zweck öffnen Sie Einstellungen-> Eigenschaftenvon "Jenkins Slave" -> Anmelden. und wählen Sie das erforderliche user aus domain für die korrekte Ausführung.