web-dev-qa-db-fra.com

jenkins ne parvient pas à se connecter au référentiel git

Je ne peux pas configurer l'URL du référentiel git de manière à ce que Jenkins puisse y accéder.

sous "Projet> Configurer> Gestion du code source", j'ai défini l'URL du référentiel sur "git @ store: repositories/testproject.git"

Je reçois cette erreur:

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.

l'accès avec cette URL fonctionne sur 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

On me demande un mot de passe et ça marche.

J'ai associé le même mot de passe aux informations d'identification dans Jenkins à "git /" et j'ai également essayé "git @ store /". Aucun n'a fonctionné.

Veuillez noter qu'il ne s'agit pas de github, mais d'un référentiel git local.

mise à jour:

l'ajout de la clé de publication du maître jenkins à l'esclave de construction a aidé à faire fonctionner la configuration:

ssh-copy-id jenkins@dilbert

maintenant les builds échouent:

 > /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 est le maître jenkins, dilbert est l'esclave de la construction. ssh du maître aux œuvres esclaves.

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

des idées comment déboguer cela?

11
Jörg Beyer

l'authentification fonctionne via ssh. avez-vous ajouté la clé publique ssh de l'utilisateur jenkins à l'utilisateur git sur votre serveur git?

faites-moi savoir si vous avez besoin d'instructions sur la façon de configurer l'authentification ssh et je modifierai ce message ici.

/ MODIFIER:

heureux de l'avoir fait fonctionner. j'ai cherché sur le site officiel de jenkins un manuel détaillé sur la partie ssh de la configuration, mais je n'en ai pas trouvé.

voici donc un bref aperçu - faites-moi savoir si c'est ce dont vous avez besoin.

  1. l'esclave jenkins (la machine de construction) se connecte au serveur git (maître jenkins)
  2. la machine de construction fonctionne en tant qu'utilisateur jenkins (par exemple jenkins @ dilbert: ~ $)
  3. git-server s'exécute en tant qu'utilisateur git (par exemple git @ store: ~ $)
  4. la clé publique jenkins @ dilbert doit être placée dans git @ store authorized_keys
  5. courir jenkins@dilbert:~/.ssh$ ssh-copy-id git@store pour copier la clé publique jenkins @ dilbert ssh sur le serveur git
5
kindaleek