it-swarm.com.de

Jenkins hängen bei "Upstream-Änderungen von Origin abrufen"

Ich versuche, Jenkins auf einem Windows Server 2012-Computer einzurichten, und ich habe große Schwierigkeiten.

Dinge, die ich getan habe:

  • id_rsa und id_rsa.pub ohne Kennwort erstellt
  • Erstellt eine known_hosts-Datei für bitbucket.org mit ssh.exe -T bitbucket.org und akzeptiert das Hinzufügen des Hosts.
  • E: wurde der systemweiten HOME-Variablen hinzugefügt
  • Ich habe diese Dateien zu C:/Windows/SysWOW64/config/systemprofile/.ssh sowie E:/.ssh hinzugefügt.
  • Ich habe meinen öffentlichen Schlüssel als Implementierungsschlüssel mit Bitbucket verknüpft.
  • Ich habe alle meine URLs, Benutzernamen usw. dreimal geprüft.
  • Ich habe sogar manuell aus dem Repository gezogen, um eine erste Basis in C:/Program Files (x86)/Jenkins/jobs/MyProject/workspace/ einzurichten.

Und doch hängt es immer noch an

Building in workspace C:\Program Files (x86)\Jenkins\jobs\MyProject\workspace
Checkout:workspace / C:\Program Files (x86)\Jenkins\jobs\MyProject\workspace - [email protected]
Using strategy: Default
Fetching changes from 1 remote Git repository
Fetching upstream changes from Origin

Ich habe es ungefähr 20 Minuten gegeben, daher ist es keine Geschwindigkeit/Größe des Repo-Problems. Wenn ich storniere, wird Folgendes zurückgegeben:

ERROR: Problem fetching from Origin / Origin - could be unavailable. Continuing anyway
hudson.plugins.git.GitException: Error performing command: C:\Program Files     (x86)\Git\bin\git.exe fetch -t Origin +refs/heads/*:refs/remotes/Origin/*
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.Java:780)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.Java:739)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.fetch(CliGitAPIImpl.Java:160)
at hudson.plugins.git.GitAPI.fetch(GitAPI.Java:230)
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.Java:793)
at hudson.plugins.git.GitSCM.access$000(GitSCM.Java:57)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:976)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:942)
at hudson.FilePath.act(FilePath.Java:865)
at hudson.FilePath.act(FilePath.Java:838)
at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.Java:942)
at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:1101)
at hudson.model.AbstractProject.checkout(AbstractProject.Java:1364)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.Java:670)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.Java:88)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:575)
at hudson.model.Run.execute(Run.Java:1575)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.Java:46)
at hudson.model.ResourceController.execute(ResourceController.Java:88)
at hudson.model.Executor.run(Executor.Java:237)
Caused by: Java.lang.InterruptedException
at Java.lang.ProcessImpl.waitFor(Native Method)
at hudson.Proc$LocalProc.join(Proc.Java:319)
at hudson.Launcher$ProcStarter.join(Launcher.Java:360)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.Java:769)
... 19 more
ERROR: Could not fetch from any repository
FATAL: Could not fetch from any repository
hudson.plugins.git.GitException: Could not fetch from any repository
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:981)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:942)
at hudson.FilePath.act(FilePath.Java:865)
at hudson.FilePath.act(FilePath.Java:838)
at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.Java:942)
at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:1101)
at hudson.model.AbstractProject.checkout(AbstractProject.Java:1364)
at     hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.Java:670)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.Java:88)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:575)
at hudson.model.Run.execute(Run.Java:1575)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.Java:46)
at hudson.model.ResourceController.execute(ResourceController.Java:88)
at hudson.model.Executor.run(Executor.Java:237)

Ich bin am Ende hier, also schätze ich jede Hilfe, die ich bekommen kann ... Hier sind eine Auswahl einiger Artikel, die ich ohne Verbesserung ausprobiert habe.

Jenkins CI für privates Github-Repository authentifizieren

Erlaubnis verweigert (publickey) bei der Einrichtung von Jenkins

Hudson Git Plugin funktioniert nicht unter Windows

http://computercamp.cdwilson.us/jenkins-git-clone-via-ssh-on-windows-7-x64

31
DTI-Matt

So habe ich ein ähnliches Problem behoben:

Msysgit installiert zwei git.exe. Eine unter C:\Program Files (x86)\Git\bin und eine zweite unter C:\Program Files (x86)\Git\cmd. Der erste kann nicht mit Jenkins verwendet werden. Es wird hängen, nachdem es seinen Job abgeschlossen hat. Der zweite funktioniert perfekt.

Aktualisieren Sie Ihre Jenkins Git-Einstellungen, um auf den korrekten cmd\git.exe hinzuweisen, und genießen Sie es!

31
David Gageot

So habe ich es gelöst: 

Ich habe das sysinternals-Tool psexec ausgeführt, um eine CMD zu erzeugen, die unter dem LocalSystem-Konto ausgeführt wird (das gleiche Konto wie der jenkins-Dienst läuft). 

PSEXEC -i -s -d CMD

In diesem Cmd-Prompt habe ich den gleichen git-Befehl aus dem Arbeitsbereichsverzeichnis ausgeführt wie die hängenden GIT.exe-Prozesse. Z.B. 

d:\Programme\Jenkins\jobs\jobname\workspace> D:\Programme\Git\bin\git.exe fetch -t ssh + git: //[email protected]: 9360/data/gitpub/myRepository. git + refs/heads /: refs/fernbedienungen/Origin/

Et voila: Ich wurde aufgefordert, "yes" einzugeben, um den SSH-Schlüssel zur Liste der bekannten Hosts hinzuzufügen. 

8
user2553930

Ein weiterer Link, den ich beim Konfigurieren von Jenkins unter Windows sehr hilfreich fand, insbesondere beim Verwenden des MSI-Installationsprogramms, lautet: http://opensourcetester.co.uk/2013/06/28/jenkins-windows-ssh/

Eine weitere Sache, die ich nicht offensichtlich fand, war: Sie müssen die SSH-URL verwenden, wenn Sie eine Verbindung zu Github herstellen, statt der Standard-https-Adresse. Hoffentlich spart das jemandem Zeit.

2
Woland

Erleben Sie auch das Einfrieren bei "Abrufen von Upstream-Änderungen von Origin".

Das Ausführen von Jenkins als Dienst auf einem Windows-basierten Computer scheint (aus meiner Erfahrung) Probleme bei der Verwendung von SSL zu haben.

Workaround-Lösung]

  1. Ändern Sie Ihren Jenkins-Service so, dass er unter einem lokalen Konto ausgeführt wird.
  2. Stellen Sie sicher, dass Ihr lokales Administratorkonto für die Git-Interaktion mit SSH konfiguriert ist.
  3. Starten Sie Jenkins neu ( details ).
  4. Wenn Jenkins nicht startet, gab es Probleme mit Git. Beenden Sie manuell git- und ssh-Prozesse, beenden Sie Java.exe von Jenkins und starten Sie den Jenkins-Dienst manuell.

Details dazu, warum ich diese Lösung wähle]

Ich habe andere Schritte zuvor mit dem Einrichten des autorisierten Hosts für die Annahme des Servers und der Registrierung des Jenkins-Schlüssels auf dem Server ausgeführt, um die Verbindung zuzulassen. Ich habe sichergestellt, dass ich Git-Aktionen unter meinem lokalen Systemkonto (unter dem der Jenkins-Dienst ausgeführt wurde) erfolgreich ausführen konnte. Trotzdem würde der Fetch einfrieren. Um zu überprüfen, ob mein Git und SSL korrekt konfiguriert sind, bin ich sogar zu dem ursprünglich konfigurierten Git-Repository in meinem Jenkins-Jobverzeichnis gegangen und habe eine erfolgreiche Pull-Anforderung unter dem lokalen Systemkonto ausgeführt. Es funktionierte; Daher wurden die Tasten richtig eingerichtet.

Ich habe vergessen, wo ich das gelesen habe, aber ich habe gehört, dass Probleme mit Git/SSH unter einem lokalen System auftreten. Mit diesem Wissen spielte ich mit meiner Git-Umgebung und änderte die GIT_SSH-Umgebungsvariable, um plink zu verwenden (mit einer Kombination aus PuTTY, um sich an den Serverschlüssel zu erinnern, puttygen, um einen OpenSSL-Schlüssel in einen PuTTY-Schlüssel umzuwandeln, und Pageant, um sich an meinen zu erinnern Tasten) für Plink. Nachdem ich mit plink gearbeitet hatte, fand ich es nicht als brauchbare Lösung. Um plink korrekt zu verwenden, musste ich auch unter meinem lokalen Systemkonto einen Festzug ausführen, damit der Jenkins-Dienst SSH-Aufrufe korrekt aushandelt. Nachdem ich darüber nachgedacht hatte, wie ich meinen ursprünglichen Zustand beim Neustart richtig einrichten würde, wollte ich nicht all diese Mühe darauf verwenden, nur die SSH-Verbindung zum Laufen zu bringen.

Stattdessen entschied ich, dass es einfacher war, Jenkins unter meinem lokalen Administratorkonto auszuführen, das auch für den Git-Server konfiguriert wurde. Es gab keine Notwendigkeit, mit konfigurierten SSH-Schlüsseln für das lokale Systemkonto umzugehen, und meine git-Aktionen funktionierten einwandfrei.


Beachten Sie, dass David Gageots Antwort auf einige zutreffen kann. Ich musste keine meiner Git-Einstellungen ändern, da ich bei der Installation von Git die Option Run Git from the Windows Command Prompt wählte, die einen Pfad zum C:\Program Files (x86)\Git\bin\cmd\-Verzeichnis bildet.

2
jdknight

Ich hatte das gleiche Problem auf meinem Laptop und konnte eine Lösung finden. Dies trifft jedoch nur zu, wenn Sie den Jenkins-Krieg in einem Tomcat-Webcontainer ausführen, der als Windows-Dienst eingerichtet ist.

Ich musste den Tomcat-Dienst so einstellen, dass er sich als mein Windows-Benutzer anstelle des lokalen Systems anmeldet. 

2
Sheparzo

Für mich waren es die Berechtigungen für den Ordner $ HOME/.ssh und dessen Inhalt. Nachdem Jenkins es für die jeweilige Benutzergruppe sichtbar gemacht hatte, konnte er die Änderungen nach einem Neustart abrufen.

1
martoncsukas

Ich habe einige Stunden damit verbracht, das herauszufinden, und ich fand heraus, dass das Problem durch das Hinzufügen des Kennworts zur Repo-URL behoben wurde:

https://USERNAME:[email protected]/REPO.git

Bitte beachten Sie das: zwischen Benutzername und Passwort

0

Version 2.6.1 des Git-Clients für Windows behebt dieses Problem in Jenkins. Jetzt hat das Abrufen von Upstream-Änderungen aus Origin keine Verzögerung.

Ich verwende den Git-cmd in Jenkins von:

C:\Programme\Git\cmd\git.exe

0
Thomas T