git - performing - plugins jenkins io
Jenkins Git plugin con https (11)
Este es un error en el plugin Jenkins Git .
Puede solucionar el problema de credenciales creando credenciales utilizando el complemento de credenciales y luego use estas credenciales en la sección SCM / Git de su trabajo. Sin embargo, esto expondrá su usuario / contraseña en texto plano en el registro de compilación si el proceso de pago falla.
Además, esto no funcionará si está utilizando un proxy HTTP con git. La mejor manera (por ahora) es usar JGit (para ser configurado en la configuración de Jenkins). Sin embargo, JGit es experimental y muy limitado también cuando se trata de proxies.
(respuesta publicada debido a una solicitud popular;))
Estoy intentando configurar un proyecto de Git en Jenkins usando el plugin de Git. En la página de configuración del proyecto, ingreso la URL del repositorio en la configuración de Git, que es una URL https ( https://git.mycompany.com/git/MyProject.git ). Cuando estoy construyendo el proyecto, sin embargo, aparece el siguiente error:
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)
Puedo clonar el repositorio desde la línea de comando, así como ejecutar git clone
como un comando de shell en los pasos de precompilación del proyecto Jenkins, por lo que no entiendo por qué la configuración del complemento no funciona. Pensando que podría tratarse de un problema de autenticación, intenté especificar las credenciales en un archivo .netrc y también incluirlas en la URL (es decir, https: // nombre de usuario: contraseñ[email protected]/git/MyProject.git ), sin embargo, en En todos los casos, sigo teniendo el mismo error. ¿Algunas ideas?
La página principal del plugin git tiene esto que decir:
Si está viendo una salida que indica que Git no pudo clonar, algo como el resultado a continuación, vaya a la configuración de Jenkins (no a la configuración del proyecto, a las globales) y cambie la ruta de Git a una ruta completamente calificada (por ejemplo, no "git"). "pero" / usr / bin / git "o donde esté instalado su binario Git). También debe verificar que los permisos sean correctos si está haciendo un clon basado en el sistema de archivos.
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)
Esto también podría ser un problema para ti.
La misma página también sugiere probar con JGit si hay un problema con el comportamiento del plugin predeterminado ( -Dorg.jenkinsci.plugins.gitclient.Git.useCLI=false
).
Intenté todas las cosas para deshacerme del problema del certificado, pero finalmente es un problema con el complemento git. Retrajo plugins para git 1.5 (de 2.0.3) y git-client 1.0.7 (de 1.6.3) y funcionó find. Tenga en cuenta que probé git-client 1.4.6 primero para poder usar la opción de credenciales, pero no funcionó. Entonces creo que la combinación correcta de estos 2 complementos es importante. Esta solución fue mencionada en JENKINS-20533
Para usar Git en Jenkins, los siguientes dos complementos necesitan ser instalados:
- Git-Client-plugin
- Git-plugin
El primer complemento (Git-Client-plugin) es una API de bajo nivel para ejecutar operaciones de git (git add, git commit, git push, git clone, ... etc).
El segundo complemento (Git-plugin) agrega Git como una opción SCM para trabajos de Jenkins.
El segundo complemento se basa en la funcionalidad del primer complemento, por lo que ambos deben estar presentes para que Git trabaje con Jenkins.
En mi caso, un esclavo de Jenkins trabajó normalmente, mientras que otro no. Cuando cambié el ejecutable de Git de forma predeterminada a JGit, ambos funcionaron.
Esto ahora está arreglado y no es más un problema con el complemento actualizado (ya que estoy escribiendo este 1.19.0). Sucedió con git-plugin-client 1.6.x.
usando git: // en lugar de https: // funciona para mí en jenkins 1.644 con git client 1.19.6
Puede registrar sus credenciales de git en "Credenciales" con su nombre de usuario y contraseña para acceder al repositorio de git mediante el protocolo https (debajo de "Administrar Jenkins"), se generará un ID de credencial (por ejemplo, dd0d6733-cc2e-4464-bb7d-4b6af86fe40a ) que ayuda a Jenkins a usar esta credencial en tuberías.
Cuando utiliza Jenkins Pipeline , puede hacer:
node{
git url: "https://tfs:8080/tfs/job.git", branch: "feature/migration", credentialsId:''dd0d6733-cc2e-4464-bb7d-4b6af86fe40a''
}
Descargará sus códigos fuente al espacio de trabajo del trabajo
Mi solución funcionó bien para 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
Ir a la configuración del sistema, establecer git ejecutable = /usr/bin/fuckgit
Hecho.
TODO: hermosa esta ans
En caso de que esté utilizando un certificado autofirmado para su repositorio Git y Git funcione desde la línea de comandos pero no desde el complemento Jenkins Git Client, debe agregar el certificado a Jenkins Java Keystore (como se describe por tijs en el comentario anterior ) .
Esto se debe a que el complemento de Git Client intenta conectarse directamente utilizando Apache HttpClient de Java (sin pasar por git.exe), por lo que se ignoran todas las configuraciones de Git normalmente utilizadas para crear la conexión (incluyendo GIT_SSL_NO_VERIFY
y certificados en curl-ca-bundle.crt)
. El HttpClient arroja SunCertPathBuilderException: unable to find valid certification path to requested target
que desafortunadamente está envuelto en una GitException sin seguimiento de pila, por lo que todo lo que podemos ver es el mensaje "No se pudo conectar" .
Para solucionarlo, puede seguir el enlace provisto por tijs : http://www.mkyong.com/webservices/jax-ws/suncertpathbuilderexception-unable-to-find-valid-certification-path-to-requested-target/
jssecacerts
copiar el archivo jssecacerts
resultante en C:/Program Files (x86)/Jenkins/jre/lib/security
si está utilizando la instalación predeterminada de Jenkins.
Puede encontrar un enlace a InstallCert.java
en la InstallCert.java
original de Andreas Sterbenz (gracias a web.archive.org), o una versión ligeramente modificada en code.google .
Comprobé que el enfoque anterior funciona para el plugin Git Client versión 1.4.6.
Actualice su cliente Git a 2.10.0 o superior.
ejecuta debajo de los comandos.
git config --system http.sslVerify false
git config --global http.sslVerify false