
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 jenkins
usuario. Generé un par de claves SSH para mi foo
usuario y agregué la pública como clave de implementación a un repositorio de github. (Verifiqué que puedo clonar el repositorio con el foo
usuario)
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 foo
la clave privada en un ámbito "Global".
Entonces configuré mi trabajo de Jenkins con elespacio de trabajo correcto(por ejemplo, /home/foo/deployment
con propiedad total para el usuario, foo
obviamente) 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 init
lo 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 jenkins
usuario conectarse al repositorio remoto como foo
, pero no le otorga permisos para escribir en el sistema de archivos local...