Jenkins: use los complementos ssh-agent y git juntos

Jenkins: use los complementos ssh-agent y git juntos

Entonces, tengo la siguiente situación: un servidor con usuarios dedicados para cada proyecto (por ejemplo foo) y un servidor jenkins que se ejecuta como jenkinsusuario. Generé un par de claves SSH para mi foousuario y agregué la pública como clave de implementación a un repositorio de github. (Verifiqué que puedo clonar el repositorio con el foousuario)

En Jenkins configuro la autenticación en "Administrar Jenkins" > "Administrar credenciales" como un "nombre de usuario SSH con clave privada" con el nombre de usuario "foo" y foola clave privada en un ámbito "Global".

Entonces configuré mi trabajo de Jenkins con elespacio de trabajo correcto(por ejemplo, /home/foo/deploymentcon propiedad total para el usuario, fooobviamente) yusando las credenciales "foo". Para "Administración de código fuente", quería usar la URL SSH de mi repositorio (por ejemplo,[correo electrónico protegido]:foo/foo.git) Sin embargo, inmediatamente me notifica que hay un problema de permiso:

Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h [email protected]:foo/foo.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied (publickey). 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Si uso la versión https de la URL (https://github.com/foo/foo.git) el error desaparece, pero cuando ejecuto el trabajo obtengo los siguientes errores en la salida de la consola:

Started by user developer
[EnvInject] - Loading node environment variables.
Building in workspace /home/foo/deployment
Cloning the remote Git repository
Cloning repository https://github.com/foo/foo.git
 > git init /home/foo/deployment # timeout=10
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Could not init /home/foo/deployment
    [long stacktrace]
Caused by: hudson.plugins.git.GitException: Command "git init /home/foo/deployment" returned status code 1:
stdout: 
stderr: /home/foo/deployment/.git: Permission denied
    [long stacktrace]
ERROR: null
Finished: FAILURE

El par de claves no utiliza una frase de contraseña, aunque me gustaría agregar una si logro que esto funcione primero. Jenkins se ejecuta en una caja Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-65-generic x86_64).

¿Que me estoy perdiendo aqui? Parece que las credenciales que proporcioné no se están utilizando, lo que explica por qué explotan los permisos. ¿Pero no entiendo por qué no se utilizan? ¿Y por qué no se puede utilizar la git@URL?

Como se ahoga por un problema de permisos, git initlo ejecuté manualmente /home/foo/deployment, pero al volver a ejecutar el trabajo de Jenkins se ahoga git fetch, nuevamente con problemas de permisos.

Respuesta1

Ah si, muy tonto de mi parte. El agente de usuario SSH obviamente solo permite al jenkinsusuario conectarse al repositorio remoto como foo, pero no le otorga permisos para escribir en el sistema de archivos local...

información relacionada