2012-05-04 22 views
5

[Update2] Entonces, ¿está bien que cuando ejecuto git desde la CLI me pida la contraseña? Puedo acceder a los servidores de github con la contraseña de la clave privada ssh, pero nunca me preguntan por esto en Jenkins ni les pido que me lo proporcionen. [/ Update2]EC2/AWS, Jenkins, Git, SSH

[Actualización] Sí. Estoy ejecutando esto en una instancia de Ubuntu en EC2. He generado las claves ssh en /var/lib/jenkins/.ssh, que es el usuario que crea Jenkins. Establecí la opción de seguridad en Jenkins para usar usuarios/grupos de Unix. [/ Update]

Estoy tratando de que Jenkins tire de git (github). Me sale el siguiente error:

hudson.plugins.git.GitException: Could not clone [my personal repo] 
    at hudson.plugins.git.GitAPI.clone(GitAPI.java:245) 
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1121) 
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1063) 
    at hudson.FilePath.act(FilePath.java:832) 
    at hudson.FilePath.act(FilePath.java:814) 
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1063) 
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1218) 
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:581) 
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:470) 
    at hudson.model.Run.run(Run.java:1434) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:239) 
Caused by: hudson.plugins.git.GitException: Command "git clone --progress -o origin [email protected]:bobbylo/Verbify.git /var/lib/jenkins/.jenkins/jobs/build_dev/workspace" returned status code 128: 
stdout: Initialized empty Git repository in /var/lib/jenkins/.jenkins/jobs/build_dev/workspace/.git/ 

stderr: Permission denied (publickey). 
fatal: The remote end hung up unexpectedly 

Ya he ido a través del ssh tutorial Github. He generado una clave privada en una instancia de EC2. Colocado en el directorio .ssh del usuario, jenkins. Puse la clave pública en Github (intenté Desplegar clave + clave SSH normal). He verificado que puedo hacer operaciones git over-the-wire (extracción, clonación, etc.) y que funciona desde la CLI con el usuario. Establecí los permisos de usuario/grupo de Unix correctamente para el usuario (de hecho, cuando lo cambio, veo que el registro de errores cambia en el registro de la consola de Jenkin). Cuando trato de usar el complemento Jenkin git o hago un comando de shell Jenkins, aparece el error anterior.

He leído acerca de ssh-agent y ssh-add y cómo puede vincularlo al script de inicio de shell para que no tenga que introducir una contraseña para cada comando. No estoy seguro de si esto es relevante aquí. .

De lo contrario, no estoy seguro de qué más puedo probar. ¡Cualquier consejo sería de ayuda!

+0

Y http://stackoverflow.com/questions/6515039/jenkins-git-permission-denied-publickey no ayuda? – VonC

+0

Supongo que estás usando Linux?Si es así, entonces Jenkins se está ejecutando como usuario "jenkins". ¿El usuario "jenkins" tiene acceso a las claves SSH necesarias (tal vez en /var/lib/jenkins/.ssh)? – msandiford

+0

Estoy en una caja ubuntu en AWS. Sí, el usuario que estoy usando es jenkins en/var/lib/jenkins – tom

Respuesta

4

lo descubrió:

-Es resulta que si se está ejecutando no como un demonio que utiliza el entorno de shell en el que se lo ejecutó -También resulta que cualquier cmd que requiera la intervención del usuario (como la paráfrasis de ssh) Jenkins lo trata como un error.

La solución por ahora es:

-Ejecutar Jenkins después de haber añadido la clave de pub github al ssh-agente a través de ssh-add para que no solicita la paráfrasis.

Si quisiera ejecutar Jenkins como un proceso de daemon, me imagino que tendría que configurar ssh-agent correctamente antes de ejecutarlo (¿no creo que usa el entorno de shell actual?).

0

Estaba enfrentando un problema similar, todo lo que tenía que hacer era asegurar que las claves de implementación se generaran después de iniciar sesión como "jenkins" de usuario que se creó como parte de la instalación de jenkins y luego reiniciar el servidor jenkins después de tener copió la clave pública en desplegar claves en github.