102 votes

Jenkins renvoie le code d'état 128 avec github

Avec la commande GitHub, j'ai :

ssh -T git@github.com
Hi (MyName)! You've successfully authenticated, but GitHub does not provide shell access.

Ma connexion avec GitHub est correcte (pas de problème), mais avec Jenkins j'ai cette erreur :

ERROR: Error cloning remote repo 'origin' : Could not clone git@github.com:Name-MysRepo/MyRepo.git
hudson.plugins.git.GitException: Could not clone git@github.com:Name-MysRepo/MyRepo.git
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.clone(CliGitAPIImpl.java:219)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1001)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:942)
    at hudson.FilePath.act(FilePath.java:904)
    at hudson.FilePath.act(FilePath.java:877)
    at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:942)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1101)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1369)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:676)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:581)
    at hudson.model.Run.execute(Run.java:1575)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:241)
Caused by: hudson.plugins.git.GitException: Command "git clone --progress -o origin git@github.com:Name-MysRepo/MyRepo.git /root/.jenkins/jobs/TestKRGDAOV01/workspace" returned status code 128:
stdout: Cloning into '/root/.jenkins/jobs/TestKRGDAOV01/workspace'...

stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Ce problème est-il lié à la clé publique ?

J'utilise Jenkins sous Tomcat 7 / Ubuntu 12 .

69voto

imdibiji Points 715

Cette erreur :

stderr: Permission denied (publickey). fatal: The remote end hung up unexpectedly

indique que Jenkins essaie de se connecter à github avec la mauvaise clé ssh.

Vous devriez :

  1. Déterminez l'utilisateur sous lequel jenkins s'exécute, par exemple 'build' ou 'jenkins'.
  2. Connectez-vous sur l'hôte Jenkins qui tente de réaliser le clone - c'est-à-dire, ne vous connectez pas au maître si un nœud est en train de réaliser la construction.
  3. Essayez de vous connecter en ssh à github - si cela échoue, alors vous devez ajouter la bonne clé à <jenkins user home>/.ssh

19voto

Tim Long Points 1052

Les éléments à vérifier sont les suivants :

  1. si la bonne clé publique (id_rsa.pub) est téléchargée sur le serveur git.
  2. si la bonne clé privée (id_rsa) est copiée dans /var/lib/jenkins/.ssh/
  3. si le fichier known_hosts est créé dans le dossier ~/.ssh. Essayez ssh -vvv git@github.com pour voir les journaux de débogage. Si tout se passe bien, github.com sera ajouté à known_hosts.
  4. si la permission de id_rsa est fixée à 700 ( chmod 700 id_rsa )

Après toutes les vérifications, essayez ssh -vvv git@github.com .

10voto

Roberto Points 2169

Assurez-vous également que vous utilisez l'url ssh github et non https.

5voto

etunko Points 51

Dans mon cas, j'ai dû ajouter la clé publique à mon repo (sur Bitbucket) ET utiliser git clone une fois via ssh pour répondre oui à la question "hôte connu" la première fois.

3voto

olexii Points 333

J'ai eu il y a quelques temps le même problème. Assurez-vous que votre clé ssh n'a pas de mot de passe et que vous n'utilisez pas un compte utilisateur commun (par exemple, mieux vaut utiliser un compte utilisateur appelé jenkins ou autre).

voir l'article suivant http://fourkitchens.com/blog/2011/09/20/trigger-jenkins-builds-pushing-github

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X