web-dev-qa-db-fra.com

Jenkins Git plugin avec https

J'essaye de configurer un projet Git dans Jenkins en utilisant le plugin Git. Dans la page de configuration du projet, j'entre l'URL du référentiel dans la configuration de Git, qui est une URL https ( https://git.mycompany.com/git/MyProject.git ). Lorsque je construis le projet, cependant, l'erreur suivante apparaît:

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 - hudson.remoting.LocalChannel@3699cfcc
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)

Je peux cloner le référentiel à partir de la ligne de commande, ainsi qu'en exécutant git clone en tant que commande Shell dans les étapes de pré-génération du projet Jenkins. Je ne comprends donc pas pourquoi la configuration du plug-in ne fonctionne pas. Pensant qu'il pourrait s'agir d'un problème d'authentification, j'ai essayé de spécifier les informations d'identification dans un fichier .netrc et de les inclure dans l'URL (c'est-à-dire. Https: // nom d'utilisateur: [email protected]/git/MyProject.git ) Cependant, dans tous les cas, je reçois toujours la même erreur. Des idées?

15
Christina

Ceci est un bogue du Jenkins Git Plugin .

Vous pouvez résoudre le problème des informations d'identification en créant des informations d'identification à l'aide du plug-in d'informations d'identification, puis utilisez ces informations d'identification dans la section SCM/Git de votre travail. Cependant, cela exposera votre utilisateur/mot de passe en texte brut dans le journal de construction si la vérification échoue.

En outre, cela ne fonctionnera pas si vous utilisez un proxy HTTP avec git. La meilleure façon (pour le moment) est d'utiliser JGit (à configurer dans la configuration de Jenkins). Cependant, JGit est expérimental et très limité également en ce qui concerne les procurations.

(réponse postée suite à une demande populaire;))

15
jimpic

Si vous utilisez un certificat auto-signé pour votre référentiel Git et que Git fonctionne en ligne de commande mais pas à partir du plug-in Jenkins Git Client, vous devez ajouter le certificat au keystore Java Jenkins (comme décrit par tijs dans le commentaire ci-dessus ).

Cela s'explique par le fait que le plug-in Git Client tente de se connecter directement à l'aide de l'Apache HttpClient de Java (en contournant git.exe). Par conséquent, tous les paramètres Git normalement utilisés pour créer la connexion sont ignorés (y compris GIT_SSL_NO_VERIFY et les certificats dans curl-ca-bundle.crt). HttpClient lève SunCertPathBuilderException: unable to find valid certification path to requested target qui est malheureusement encapsulé dans une exception GitException sans trace de pile. Nous ne pouvons donc que constater que le message 'Échec de la connexion'.

Pour résoudre ce problème, vous pouvez suivre le lien fourni par tijs: http://www.mkyong.com/webservices/jax-ws/suncertpathbuilderexception-unable-to-find-valid-certification -path-path-to-required-target/

Si vous utilisez l’installation par défaut de Jenkins, vous devrez copier le fichier jssecacerts obtenu dans C:\Program Files (x86)\Jenkins\jre\lib\security.

Vous pouvez trouver un lien vers InstallCert.Java dans l'original Andreas Sterbenz post (grâce à web.archive.org), ou une version légèrement modifiée sur code.google .

J'ai vérifié que l'approche ci-dessus fonctionne pour le plugin Git Client version 1.4.6.

6
mgr32

Mettez à niveau votre client Git à la version 2.10.0 ou ultérieure. 

exécuter les commandes ci-dessous. 

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

Ma solution a bien fonctionné pour 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 $@" > $fuckgit

Allez au paramétrage du système, définissez git executable = /usr/bin/fuckgit

Terminé.

TODO: beau ce ans

1
micfan

Page principale du plugin git a ceci à dire:

Si vous voyez une sortie indiquant que Git ne peut pas cloner, quelque chose comme pour la sortie ci-dessous, allez dans les paramètres de configuration de Jenkins (pas les paramètres du projet, les paramètres globaux) et changer le chemin Git à un chemin complet (par exemple, pas "git" mais "/ usr/bin/git" ou n’importe où votre binaire Git est installé). Vous devriez également vérifier que le les autorisations sont correctes si vous utilisez un clone basé sur un système de fichiers.

Started by user anonymous
Checkout:workspace / C:\Documents and Settings\Administrator\.hudson\jobs\watir\workspace - hudson.remoting.LocalChannel@1a1f370
Last Build : #4
Checkout:workspace / C:\Documents and Settings\Administrator\.hudson\jobs\watir\workspace - hudson.remoting.LocalChannel@1a1f370
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)

Cela pourrait être un problème pour vous aussi.

La même page suggère également de tester avec JGit s’il ya un problème avec le comportement du plugin par défaut (-Dorg.jenkinsci.plugins.gitclient.Git.useCLI=false).

1
eis

Vous pouvez enregistrer vos identifiants git dans "Identifiants" avec votre login et mot de passe pour accéder au référentiel git par protocole https (ci-dessous sous "Gérer Jenkins" ), il générera un credentialId (par exemple dd0d6733-cc2e-4464-bb7d-4b6af86fe40a) qui aide Jenkins à utiliser ce justificatif dans les pipelines. 

Lorsque vous utilisez Jenkins Pipeline , vous pouvez effectuer les opérations suivantes:

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

Il téléchargera vos codes sources dans l'espace de travail du travail.

1
Lucas Amorim Silva

J'ai essayé tous les trucs pour me débarrasser du problème du certificat mais finalement c'est un problème avec le plugin git. Je rétablis les plugins dans git 1.5 (à partir de la version 2.0.3) et git-client 1.0.7 (à partir de la version 1.6.3), et cela a fonctionné. Notez que j’ai d’abord essayé git-client 1.4.6 pour pouvoir utiliser l’option credential mais cela ne fonctionnait pas. Je pense donc que la combinaison correcte de ces 2 plugins est importante. Cette solution a été mentionnée à JENKINS-20533

0
ashah

Pour utiliser Git dans Jenkins, les deux plugins suivants doivent être installés:

  1. Git-Client-plugin
  2. Git-plugin

Le premier plugin (Git-Client-plugin) est une API de bas niveau permettant d'exécuter des opérations git (git add, git commit, git Push, git clone, etc.).

Le second plugin (Git-plugin) ajoute Git en tant qu'option SCM pour les travaux Jenkins.

Le second plugin s'appuie sur les fonctionnalités du premier plugin. Les deux doivent donc être présents pour que Git fonctionne avec Jenkins.

0
Mahi

utiliser git: // au lieu de https: // fonctionne pour moi sur jenkins 1.644 avec le client git 1.19.6

0
Zougi

Ceci est maintenant corrigé et plus aucun problème avec le plugin à jour (car j'écris cette 1.19.0) C'est arrivé avec git-plugin-client 1.6.x.

0
kriss

Dans mon cas, un esclave Jenkins travaillait normalement, un autre non. Lorsque j'ai remplacé l'exécutable Git par défaut par JGit, ils ont tous deux travaillé.

0
user5195035