jenkins no puede conectarse al repositorio git

11

No puedo configurar la url del repositorio git de una manera, para que Jenkins pueda acceder a ella.

En "Proyecto> Configurar> Administración del código fuente" configuré la URL del repositorio en "git @ store: repositories / testproject.git"

Me sale este error:

Failed to connect to repository : Command "/usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password). 
fatal: Could not read from remote repository.

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

el acceso con esa URL funciona en un shell:

jenkins@dilbert:~$ /usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git
git@store's password: 
4fd35a4f528e2f2921a52cfd03918b7cbde3d253    refs/heads/master

Me piden una contraseña y funciona.

Asociaba la misma contraseña a las credenciales en Jenkins a "git /" y también probé con "git @ store /". Ninguno funcionó.

Tenga en cuenta que no se trata de github, sino de un repositorio local de git.

actualizar:

agregar la clave de pub del maestro jenkins al esclavo de compilación ayudó a que la configuración funcionara:

ssh-copy-id jenkins@dilbert

ahora las compilaciones están fallando:

 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url git@store:repositories/testproject.git # timeout=10
Fetching upstream changes from git@store:repositories/testproject.git
 > /usr/bin/git --version # timeout=10
 > /usr/bin/git -c core.askpass=true fetch --tags --progress git@store:repositories/testproject.git +refs/heads/*:refs/remotes/origin/*
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from git@store:repositories/testproject.git
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:735)
    at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:983)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1016)
    at hudson.scm.SCM.checkout(SCM.java:484)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1270)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:531)
    at hudson.model.Run.execute(Run.java:1751)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:89)
    at hudson.model.Executor.run(Executor.java:240)
Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git -c core.askpass=true fetch --tags --progress git@store:repositories/testproject.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: Could not read from remote repository.

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

store es el maestro jenkins, dilbert es el esclavo de construcción. ssh de maestro a esclavo funciona.

jenkins@store:~$ ssh dilbert uptime
 16:06:21 up 3 days, 18:53, 13 users,  load average: 0,31, 0,38, 0,50

alguna idea de cómo depurar esto?

Jörg Beyer
fuente

Respuestas:

5

la autenticación funciona a través de ssh. ¿ha agregado la clave ssh pública del usuario jenkins al usuario git en su servidor git?

avíseme si necesita instrucciones sobre cómo configurar la autenticación ssh y editaré esta publicación aquí.

/EDITAR:

Me alegra que lo hayas puesto en funcionamiento. busqué en el sitio web oficial de jenkins un manual detallado sobre la parte ssh de la configuración, pero no pude encontrar ninguno.

así que aquí hay una descripción rápida: avíseme si esto es lo que necesita.

  1. jenkins slave (la máquina de construcción) se conecta al servidor git (jenkins master)
  2. la máquina de construcción funciona como usuario de jenkins (por ejemplo, jenkins @ dilbert: ~ $)
  3. git-server se ejecuta como usuario git (por ejemplo, git @ store: ~ $)
  4. La clave pública de jenkins @ dilbert debe colocarse en las llaves autorizadas de git @ store.
  5. ejecutar jenkins@dilbert:~/.ssh$ ssh-copy-id git@storepara copiar la clave pública jenkins @ dilbert ssh al servidor git
algo amable
fuente
¿podría explicar qué usuarios ssh-key agregan a dónde?
Jörg Beyer
el usuario de jenkins debe tener su clave de pub almacenada en <jenkins user home dir> /. ssh / id_rsa.pub; esta debe agregarse a <git user home dir> /. ssh / Authorizedkeys
kindaleek
haciendo "jenkins @ store: ~ / .ssh $ ssh-copy-id git @ store" get's jenkins para aceptar la configuración (eso es una mejora), pero falla la construcción de un esclavo jenkins remoto. ¿alguna idea?
Jörg Beyer
bueno para leer desafortunadamente, mi experiencia con git termina casi allí ... pero recuerdo un problema similar en el trabajo. Puedo estar equivocado ahora, pero tienes que trabajar como usuario (por ejemplo, Joerg Beyer) en la plataforma git, ¿verdad? verifique el permiso allí (puede cambiar los permisos de los usuarios en la interfaz web para cada grupo al que pertenecen). intente configurarlo para desarrollador para probar / EDITAR: escribió el esclavo jenkins remoto: si usa un par de claves diferente, debe agregar la clave pública a las claves autorizadas de git una vez más
kindaleek
no estoy seguro. Actualicé la pregunta. ¿Qué clave ssh necesito agregar y dónde?
Jörg Beyer