Autenticar Jenkins CI para el repositorio privado de Github


Me gustaría que Jenkins recuperara automáticamente los datos de mi repositorio privado alojado en Github. Pero no tengo idea de cómo llevar a cabo esa tarea.. Probé la documentación, generando ssh-key para el usuario jenkins y todo lo que puedo ver es: "no se puede clonar el repositorio". He comprobado las URL-son válidas.

Alguna pista, tal vez usted sabe algunos documentos/blogs/lo que sea que están describiendo este tipo de cosas?

Author: ThomasW, 2011-03-06

6 answers

Tal vez el soporte de GitHub para implementar claves es lo que estás buscando? Para citar esa página:

¿Cuándo debo usar una clave de implementación?

Simple, cuando tiene un servidor que necesita acceso de extracción a un único repositorio privado. Esta clave se adjunta directamente al repositorio en lugar de a una cuenta de usuario personal.

Si eso es lo que ya está intentando y no funciona, es posible que desee actualizar su pregunta con más detalles de la URLs que se utilizan, los nombres y la ubicación de los archivos clave, etc.


Ahora la parte técnica: ¿Cómo usar la clave SSH con Jenkins?

Si tiene, por ejemplo, un usuario jenkins unix, puede almacenar su clave de despliegue en ~/.ssh/id_rsa. Cuando Jenkins intenta clonar el repositorio a través de ssh, intentará usar esa clave.

En algunas configuraciones, no puede ejecutar Jenkins como una cuenta de usuario propia, y posiblemente tampoco puede usar la ubicación de clave ssh predeterminada ~/.ssh/id_rsa. En tales casos, puede crear una clave en un ubicación diferente, por ejemplo, ~/.ssh/deploy_key, y configure ssh para usarlo con una entrada en ~/.ssh/config:

Host github-deploy-myproject
    HostName       github.com
    User           git
    IdentityFile   ~/.ssh/deploy_key
    IdentitiesOnly yes

Debido a que todo lo que se autentica en todos los repositorios de Github usando [email protected] y no desea que la clave anterior se use para todas sus conexiones a Github, creamos un alias de host github-deploy-myproject. Su URL clon ahora se convierte en

git clone github-deploy-myproject:myuser/myproject

Y eso es también lo que pones como URL del repositorio en Jenkins.

(tenga en cuenta que debe no poner ssh:// delante para que esto funcione.)

 134
Author: Mark Longair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-19 08:59:28

Una cosa que tiene este trabajo para mí es asegurarse de que github.com en ~jenkins/.ssh/known_hosts.

 36
Author: Edward Samson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-04 06:51:30

Si necesitas que Jenkins acceda a más de 1 proyecto necesitarás:
1. agregar clave pública a una cuenta de usuario de github
2. agregue este usuario como Propietario (para acceder a todos los proyectos) o como Colaborador en cada proyecto.

Muchas claves públicas para un usuario del sistema no funcionarán porque GitHub encontrará la primera clave de implementación coincidente y enviará de vuelta un error como "ERROR: Permission to user / repo2 denied to user / repo1"

Http://help.github.com/ssh-issues /

 13
Author: Sergii Mostovyi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-31 14:52:31

Jenkins crea un usuario Jenkins en el sistema. La clave ssh debe ser generada para el usuario Jenkins. Estos son los pasos:

sudo su jenkins -s /bin/bash
cd ~
mkdir .ssh // may already exist
cd .ssh
ssh-keygen

Ahora puede crear una credencial de Jenkins usando la clave SSH En el panel de Jenkins Añadir credenciales

Seleccione esta opción

Clave privada: Del maestro ~ / de Jenkins.ssh

 3
Author: Ray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-09 03:21:09

Tuve un problema similar con gitlab. Resulta que había restringido a los usuarios que se les permite iniciar sesión a través de ssh. Esto no afectará a los usuarios de github, pero en caso de que las personas terminen aquí para problemas de gitlab (y similares), asegúrese de agregar git a la configuración AllowUsers en /etc/ssh/sshd_config:

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
AllowUsers batman git
 1
Author: Jon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-23 20:47:08

Una alternativa a la respuesta de sergey_mo es crear varias claves ssh en el servidor jenkins.

(Aunque como dijo el primer comentarista de la respuesta de sergey_mo, esto puede terminar siendo más doloroso que manejar un solo par de claves.)

 -1
Author: orlanthi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-08 08:09:23