wake-up-neo.com

Jenkins Git-Plugin mit https

Ich versuche, ein Git-Projekt in Jenkins mit dem Git-Plugin zu konfigurieren. Auf der Projektkonfigurationsseite gebe ich die Repository-URL in die Git-Konfiguration ein. Hierbei handelt es sich um eine https-URL ( https://git.mycompany.com/git/MyProject.git ). Beim Erstellen des Projekts bekomme ich jedoch die folgende Fehlermeldung:

Started by user Hudson Administrator
[EnvInject] - Loading node environment variables.
Building in workspace /home/hudson/.hudson/jobs/MyProject/workspace
Checkout:workspace / /home/hudson/.hudson/jobs/MyProject/workspace - [email protected]
Using strategy: Default
Cloning the remote Git repository
Cloning repository https://git.mycompany.com/git/MyProject.git
git --version
git version 1.8.2.1
ERROR: Error cloning remote repo 'Origin' : Could not clone https://git.mycompany.com/git/MyProject.git
hudson.plugins.git.GitException: Could not clone https://git.mycompany.com/git/MyProject.git
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.Java:286)
    at org.jenkinsci.plugins.gitclient.AbstractGitAPIImpl.clone(AbstractGitAPIImpl.Java:59)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.clone(CliGitAPIImpl.Java:47)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:1012)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:948)
    at hudson.FilePath.act(FilePath.Java:912)
    at hudson.FilePath.act(FilePath.Java:885)
    at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.Java:948)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:1114)
    at hudson.model.AbstractProject.checkout(AbstractProject.Java:1411)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.Java:652)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.Java:88)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:557)
    at hudson.model.Run.execute(Run.Java:1665)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.Java:507)
    at hudson.model.ResourceController.execute(ResourceController.Java:88)
    at hudson.model.Executor.run(Executor.Java:230)
Caused by: hudson.plugins.git.GitException: Failed to connect to https://git.mycompany.com/git/MyProject.git
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getURLWithCrendentials(CliGitAPIImpl.Java:1374)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getURLWithCrendentials(CliGitAPIImpl.Java:1326)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.Java:47)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.Java:280)
    ... 16 more
Trying next repository
ERROR: Could not clone repository
Java.io.IOException: Could not clone
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:1025)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:948)
    at hudson.FilePath.act(FilePath.Java:912)
    at hudson.FilePath.act(FilePath.Java:885)
    at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.Java:948)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:1114)
    at hudson.model.AbstractProject.checkout(AbstractProject.Java:1411)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.Java:652)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.Java:88)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:557)
    at hudson.model.Run.execute(Run.Java:1665)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.Java:507)
    at hudson.model.ResourceController.execute(ResourceController.Java:88)
    at hudson.model.Executor.run(Executor.Java:230)

Ich kann das Repository von der Befehlszeile aus klonen und auch git clone als Shell-Befehl in den Jenkins-Vorbereitungsschritten des Projekts ausführen. Ich weiß nicht, warum die Plugin-Konfiguration nicht funktioniert. Ich denke, es könnte ein Authentifizierungsproblem sein. Ich habe versucht, die Anmeldeinformationen in einer .netrc-Datei anzugeben und sie in die URL aufzunehmen (z. B. https: // Benutzername: [email protected]/git/MyProject.git ) aber in allen Fällen bekomme ich immer noch den gleichen Fehler. Irgendwelche Ideen?

15
Christina

Dies ist ein Fehler im Jenkins Git Plugin .

Sie können das Problem mit den Anmeldeinformationen umgehen, indem Sie Anmeldeinformationen mit dem Plug-In für Anmeldeinformationen erstellen und diese Anmeldeinformationen dann im Abschnitt SCM/Git Ihres Jobs verwenden. Dies macht jedoch Ihren Benutzer/Ihr Passwort im Klartext im Build-Protokoll verfügbar, wenn die Überprüfung fehlschlägt.

Dies funktioniert auch nicht, wenn Sie einen HTTP-Proxy mit git verwenden. Der beste Weg (vorerst) ist die Verwendung von JGit (in der Jenkins-Konfiguration zu konfigurieren). JGit ist jedoch experimentell und in Bezug auf Stellvertreter auch sehr begrenzt.

(Antwort aufgrund populärer Anfrage veröffentlicht;))

15
jimpic

Wenn Sie für Ihr Git-Repository ein selbstsigniertes Zertifikat verwenden und Git Works von der Befehlszeile aus, nicht jedoch vom Jenkins Git Client-Plugin aus, müssen Sie das Zertifikat zum Jenkins Java Keystore hinzufügen (wie in tijs in beschrieben der Kommentar oben ).

Dies liegt daran, dass das Git-Client-Plug-In versucht, eine direkte Verbindung mit Javas Apache HttpClient (unter Umgehung von git.exe) herzustellen, sodass alle Git-Einstellungen, die normalerweise zum Erstellen der Verbindung verwendet werden, ignoriert werden (einschließlich GIT_SSL_NO_VERIFY und Zertifikaten in curl-ca-bundle.crt). Der HttpClient wirftSunCertPathBuilderException: unable to find valid certification path to requested target ein, der unglücklicherweise in einen GitException ohne Stack-Trace, also alles was wir sehen können, ist 'Verbindung fehlgeschlagen'.

Um dies zu beheben, können Sie dem Link von tijs folgen: http://www.mkyong.com/webservices/jax-ws/suncertpathbuilderexception-unable-to-find-valid-certification -Pfad-zum-angeforderten-Ziel/

Sie müssen die resultierende jssecacerts-Datei nach C:\Program Files (x86)\Jenkins\jre\lib\security kopieren, wenn Sie die Standardinstallation von Jenkins verwenden.

Einen Link zu InstallCert.Java finden Sie im Original Andreas Sterbenz Beitrag (Dank an web.archive.org) oder in einer leicht geänderten Version unter code.google .

Ich habe den obigen Ansatz für Git Client Plugin Version 1.4.6 überprüft.

6
mgr32

Rüsten Sie Ihren Git-Client auf 2.10.0 oder höher auf. 

führen Sie die folgenden Befehle aus. 

git config --system http.sslVerify false    
git config --global http.sslVerify false    
2
Jenish Patel

Meine Lösung funktionierte gut für Jenkins-Git-Plugin.

# create my exec
su root
fuckgit=/usr/bin/fuckgit
touch $fuckgit
echo "#! /usr/bin/env bash" > $fuckgit
echo "git -c sslVerify=false [email protected]" > $fuckgit

Gehe zu Systemeinstellung, setze git executable = /usr/bin/fuckgit

Erledigt.

TODO: schön dieses ans

1
micfan

Hauptseite von git plugin hat folgendes zu sagen:

Wenn Sie eine Ausgabe sehen, die darauf hinweist, dass Git nicht geklont werden konnte, etwas Gehen Sie wie in der Ausgabe unten zu den Jenkins-Konfigurationseinstellungen (nicht die Projekteinstellungen, sondern die globalen) und ändern Sie den Git-Pfad in ein vollständig qualifizierter Pfad (z. B. nicht "git", sondern "/ usr/bin/git" oder wo auch immer Ihre Git-Binärdatei ist installiert). Sie sollten auch sicherstellen, dass die Berechtigungen sind korrekt, wenn Sie einen Dateisystem-basierten Klon ausführen.

Started by user anonymous
Checkout:workspace / C:\Documents and Settings\Administrator\.hudson\jobs\watir\workspace - [email protected]70
Last Build : #4
Checkout:workspace / C:\Documents and Settings\Administrator\.hudson\jobs\watir\workspace - [email protected]
Cloning the remote Git repository
Cloning repository Origin
$ git clone -o Origin git://github.com/bret/watir.git "C:\Documents and Settings\Administrator\.hudson\jobs\watir\workspace"
Trying next repository
ERROR: Could not clone from a repository
FATAL: Could not clone
hudson.plugins.git.GitException: Could not clone
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:400)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:358)
    at hudson.FilePath.act(FilePath.Java:676)
    at hudson.FilePath.act(FilePath.Java:660)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:358)
    at hudson.model.AbstractProject.checkout(AbstractProject.Java:833)
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.Java:314)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.Java:266)
    at hudson.model.Run.run(Run.Java:948)
    at hudson.model.Build.run(Build.Java:112)
    at hudson.model.ResourceController.execute(ResourceController.Java:93)
    at hudson.model.Executor.run(Executor.Java:118)

Dies könnte auch für Sie ein Problem sein.

Dieselbe Seite empfiehlt auch das Testen mit JGit, wenn ein Problem mit dem Standardverhalten von Plugins (-Dorg.jenkinsci.plugins.gitclient.Git.useCLI=false) vorliegt.

1
eis

Sie können Ihre git-Anmeldedaten in "Anmeldeinformationen" mit Ihrem login und Kennwort registrieren, um über das https-Protokoll auf das Git-Repository zuzugreifen (unten "Manage Jenkins" ) generiert es eine credentialId (zB dd0d6733-cc2e-4464-bb7d-4b6af86fe40a), die Jenkins bei der Verwendung dieses Berechtigungsnachweises in Pipelines hilft. 

Wenn Sie Jenkins Pipeline verwenden, können Sie Folgendes tun:

node{
    git url: "https://tfs:8080/tfs/job.git", branch: "feature/migration", credentialsId:'dd0d6733-cc2e-4464-bb7d-4b6af86fe40a'
}

Ihre Quellcodes werden in den Arbeitsbereich des Jobs heruntergeladen

1

Ich habe alles ausprobiert, um die Zertifikatsausgabe loszuwerden, aber schließlich ist es ein Problem mit Git-Plugin. Ich rolle Plugins auf git 1.5 (von 2.0.3) und git-client 1.0.7 (von 1.6.3) zurück und es hat funktioniert. Beachten Sie, dass ich zuerst git-client 1.4.6 ausprobiert habe, damit ich die Berechtigungsoption verwenden kann, aber es funktionierte nicht. Daher denke ich, dass die richtige Kombination dieser beiden Plugins wichtig ist. Diese Lösung wurde unter JENKINS-20533 erwähnt.

0
ashah

Um Git in Jenkins verwenden zu können, müssen die folgenden zwei Plugins installiert werden:

  1. Git-Client-Plugin
  2. Git-Plugin

Das erste Plugin (Git-Client-Plugin) ist eine Low-Level-API zum Ausführen von git-Vorgängen (git add, git commit, git Push, git clone usw.).

Das zweite Plugin (Git-Plugin) fügt Git als SCM-Option für Jenkins-Jobs hinzu.

Das zweite Plugin basiert auf der Funktionalität des ersten Plugins. Daher müssen beide vorhanden sein, damit Git mit Jenkins zusammenarbeiten kann.

0
Mahi

git: // anstelle von https: // funktioniert bei mir auf jenkins 1.644 mit git-client 1.19.6

0
Zougi

Dies ist nun behoben und kein Problem mehr mit dem aktuellen Plugin (wie ich dieses 1.19.0 schreibe). Das passierte mit git-plugin-client 1.6.x.

0
kriss

In meinem Fall arbeitete ein Jenkins-Sklave normal, ein anderer nicht. Als ich die ausführbare Git-Datei in JGit geändert habe, funktionierten beide.

0
user5195035