Pregunta

el problema

Estoy tratando de construir mi solicitud en Jenkins, y está en un repositorio privado en GitHub, también hay un submódulo privado.

Puedo clonar el repositorio privado en Jenkins configurando sus credenciales, pero Jenkins no puede clonar el submodule, aquí está la salida de una compilación fallida:

Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/Project/workspace
Fetching changes from the remote Git repository
Fetching upstream changes from git@github.com:user/repogit
using GIT_SSH to set credentials 
Checking out Revision 9cc99b67cc676d0ea8ccd489a8327f5c6dbb8d7f (origin/branch)
[workspace] $ /bin/sh -xe /tmp/hudson2710403018107019432.sh
+ git submodule update --init --recursive
Initialized empty Git repository in /var/lib/jenkins/jobs/repository/submodule/.git/
ERROR: Repository not found.
fatal: The remote end hung up unexpectedly
Clone of 'git@github.com:user/submodule.git' into submodule path 'repository/submodule/' failed
Build step 'Execute shell' marked build as failure
Discard old builds...
#156 is removed because status FAILURE is not to be kept
Publishing Clover coverage report...
No Clover report will be published due to a Build Failure
Sending e-mails to: 
Finished: FAILURE

aquí es lo que he tratado de hacer en Jenkins

  • Intentó establecer el comportamiento adicional "Comportamiento del submódulo avanzado", sin éxito.
  • Intenté configurar un nuevo paso antes de ejecutar las pruebas con phpunit:

git submodule update --init --recursive

  • Intentó establecer un repositorio de git en el proyecto de mi submódulo, no solo el repositorio principal que se está probando, sin suerte también.

Todos ellos causan el error que dice que Jenkins no puede encontrar el repositorio del submodule.

¿Alguna idea de cómo puedo resolver esto?

(el nombre de usuario, los caminos y los repositorios son correctos, los he cambiado a publicar aquí)

¿Fue útil?

Solución

resuelto.En mi credencial, estuve usando una clave SSH directa (opción "ingrese directamente"), en lugar de poner en un archivo.

Acabo de poner las llaves (públicas y privadas) en ~ / .ssh, y cambió mis credenciales a la opción "Desde el Maestro Jenkins ~ / .ssh".

El problema fue que el submódulo no estaba utilizando la credencial que he especificado en el repositorio principal, estaba tratando de usar la clave SSH predeterminada (.ssh / id_rsa).

Otra solución es pasar a la hora del submodule GIT (solo necesita esto si su tecla no está en la ruta predeterminada (~ / .ssh / id_rsa))

tampoco olvides dar los permisos correctos a tus claves, en mi caso tuve que:

chown apache ~/.ssh/id_rsa*
chmod 700 ~/.ssh/id_rsa*

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top