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?
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.)
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
.
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"
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
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
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.)
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