it-swarm.com.de

Jenkins können das Git-Repository nicht über Git/SSH unter Windows klonen

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)
  • Ich kann das Repository über die schreibgeschützte Git-URL git://github.com/zeljkofilipin/watirbook.git von Jenkins auf beiden Maschinen klonen
  • Ich kann über die Befehlszeile auf beiden Maschinen über die Git/SSH-URL [email protected]:zeljkofilipin/watirbook.git klonen
  • Ich kann über Git/SSH-URL von Jenkins auf einer 32-Bit-Maschine, aber nicht auf einer 64-Bit-Maschine klonen.

Der 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

19
Željko Filipin

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:

  1. ein Mix aus Msysgit und Cygwin ist installiert: MSysgit hat für mich besser funktioniert - aber ich gehe davon aus, dass Sie das auch verwenden
  2. manche Leute haben mehr Glück mit <MSYSGIT_ROOT>\cmd\git.cmd als <MSYSGIT_ROOT>\bin\git.exe
  3. vergewissern Sie sich, dass Ihr Slave als derselbe Benutzer ausgeführt wird (was bei dienstbasierten Installationen nicht der Standard ist) .. - Oh, ich sehe, Sie haben das auch
  4. einstellung HOME Variable für Windows-Slaves
  5. stellen Sie im Grunde sicher, dass die gleichen .ssh-Schlüssel unter Jenkins erreicht werden.
  6. für das Debuggen fand ich es hilfreich, einen Testjob ohne SCM zu erstellen, aber git 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!

26
inger

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.

6
Shanmu

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.

3
mehmet6parmak

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:

  1. Generiere den Schlüssel mit ssh-keygen (beachte, wo sie sich befinden)
  2. Stellen Sie "HOME" auf diesen Ort

Ich habe mit puttygen und GET_SSH = plink versucht, dass alles sehr schlecht ausgefallen ist, aber keine klaren Fehler.

2
dkjkj

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).

0
Cathy

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.

0
Anand Bansal

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 

0
user33994

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.

0
AVG