Configurar correctamente Git con Jenkins en Windows 7

Estoy usando Jenkins 1.484 en Windows 7 y tengo problemas con la clonación de un repository git.

He configurado Git correctamente, pero cuando trato de clonar un repository, esto toma una eternidad y nunca tiene éxito. Se detiene justo después:

git –version git versión 1.7.9.msysgit.0

Si después de diez minutos detengo la compilation, eso es lo que veo:

ERROR: Error cloning remote repo 'origin' : Could not clone git@github.com:GBSA/Gottware-server.git hudson.plugins.git.GitException: Could not clone git@github.com:GBSA/Gottware-server.git at hudson.plugins.git.GitAPI.clone(GitAPI.java:271) at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1040) at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:982) at hudson.FilePath.act(FilePath.java:851) at hudson.FilePath.act(FilePath.java:824) at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:982) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1138) at hudson.model.AbstractProject.checkout(AbstractProject.java:1256) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:589) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:494) at hudson.model.Run.execute(Run.java:1502) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:236) Caused by: hudson.plugins.git.GitException: Error performing command: C:\Program Files (x86)\Git\bin\git.exe clone --progress -o origin git@github.com:GBSA/Gottware-server.git G:\jenkins\workspaces\gottwareproductiontests at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:870) at hudson.plugins.git.GitAPI.access$000(GitAPI.java:40) at hudson.plugins.git.GitAPI$1.invoke(GitAPI.java:267) at hudson.plugins.git.GitAPI$1.invoke(GitAPI.java:246) at hudson.FilePath.act(FilePath.java:851) at hudson.FilePath.act(FilePath.java:824) at hudson.plugins.git.GitAPI.clone(GitAPI.java:246) ... 14 more 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:352) at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:851) ... 20 more 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:1052) at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:982) at hudson.FilePath.act(FilePath.java:851) 

Si, por el contrario, bash ejecutar el mismo GIT que he configurado desde la command-line, el clon tiene éxito

 C:\Program Files (x86)\Git\bin>"C:\Program Files (x86)\Git\bin\git.exe" clone --progress -o origin git@github.com:GBSA/Gottware-server.git G:\jenkins\ workspaces\gottwareproductiontests Cloning into 'G:\jenkins\workspaces\gottwareproductiontests'... remote: Counting objects: 38007, done. remote: Compressing objects: 100% (16268/16268), done. 

¿Qué está pasando mal?

En Windows, el process Jenkins se ejecuta como un service del sistema, por lo que se ejecuta como el usuario del SISTEMA y no utiliza su count. Está utilizando una URL de tipo git@github.com para que intente utilizar SSH, lo que requerirá que se encuentre una key ssh desde un agente ssh como el concurso o desde ~ / .ssh / identity cuando se ejecuta como el usuario de SYSTEM.

La solución más simple será usar un transporte http o https en su lugar. Como está tirando y no empujando cuando realiza comstackciones, no necesita configurar un nombre de usuario o contraseña para estos protocolos. Posiblemente pueda usar el protocolo git (git: //github.com / …) si su configuration de networking local lo permite.

Alternativamente, puede usar psexec desde sysinternals para get un símbolo del sistema como usuario del sistema y arreglar el entorno local para que ssh funcione. psexec -i -s cmd.exe producirá un símbolo del sistema y luego puede ejecutar el shell msysGit bash y configurar una key ssh adecuada para registrarse con el sistema remoto. He estado usando esto en XP, por lo que es posible que ya no sea aplicable en Win7. También puede configurar Jenkins para que se ejecute como otra count de usuario pero no he usado ese método localmente.