web-dev-qa-db-fra.com

le plugin git pour Jenkins ne parvient pas à cloner un dépôt à partir d'une machine locale. Code d'erreur 128

Erreur:

Failed to connect to repository : Command "/usr/bin/git ls-remote -h file:///home/myuser/path/to/project HEAD" returned status code 128:
stdout:
stderr: fatal: 'home/myuser/path/to/project' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

J'ai essayé ce qui suit:

  • chmod 777 dans le dossier repo (dossier contenant le répertoire .git)
  • chowned à jenkins:jenkins dans le dossier repo
  • essayé de cloner dans un autre dossier à partir de ce dossier local: cela fonctionne!

Lorsque j'exécute la commande ci-dessus: /usr/bin/git ls-remote -h file:///home/myuser/path/to/project HEAD sur cmd, je récupère les branches.

Mes questions sont:

  1. pourquoi la commande git ls-remote -h ... est-elle appelée alors qu'elle devrait être git clone ...?
  2. Comment configurer le plugin jenkins git pour récupérer le code du dépôt local

Mon environnement:

RHEL 5.9

Jenkins 1.519 installé en tant que service (pas de conteneur Web)

plugin Git

16
Vikram

Lors de l'installation de Jenkins en tant que service, par défaut, Jenkins ne crée pas de répertoire utilisateur comme dans: /home/jenkins. Le répertoire de base par défaut de Jenkins est défini sur /var/lib/jenkins. Comme je m'y attendais, jenkins a du mal à accéder aux ressources locales à partir du répertoire des autres utilisateurs.

J'ai déplacé mon référentiel cloné sous le répertoire de base par défaut de Jenkins, c'est-à-dire sous /var/lib/jenkins, de sorte que ma Repository URLin configuration de projet Jenkins ressemble à ceci: file:///${JENKINS_HOME}/repo/<myprojectname>

UPDATE: Ce qui précède fonctionne bien ... mais j'ai trouvé un meilleur moyen de le faire à partir de ce blog

Les étapes sont décrites ici:

recherchez le script /etc/init.d/jenkins. Quelques variables $JENKINS sont définies. Cela devrait vous conduire à la sysconfig pour jenkins i.e. /etc/sysconfig/jenkins. Arrêtez votre instance de Jenkins:

Sudo /sbin/service jenkins stop

Faire une sauvegarde

cp /etc/sysconfig/jenkins /etc/sysconfig/jenkins.bak

Dans ce fichier, modifiez la propriété suivante:

$JENKINS_USER="<your desired user>"

Changer la propriété de tous les annuaires Jenkins associés:

chown -R <your desired user>:<your user group> /var/lib/jenkins

chown -R <your desired user>:<your user group> /var/cache/jenkins

chown -R <your desired user>:<your user group> /var/log/jenkins

Redémarrez Jenkins et cette erreur devrait disparaître

Sudo /sbin/service jenkins start

Cette erreur devrait disparaître maintenant!

16
Vikram

Cette question a été posée il y a longtemps, mais j'avais ce problème aujourd'hui et il y a très peu de ressources. Probablement parce que les gens ont tendance à se connecter à distance aux dépôts git.

J'ai vérifié à l'aide de strace ce que faisait exactement Jenkins et oui, c'était un problème d'autorisations.

Mais je l'ai résolu d'une manière plus simple que la réponse n ° 2 - en ajoutant Jenkins au groupe de serveurs git - dans mon cas, git1: root# gpasswd -a jenkins git1 root# service jenkins restart

8
Bulba

J'exécute Jenkins sur Windows et j'ai eu le même problème. J'ai pu résoudre ce problème en demandant au service Jenkins de se connecter en tant qu'utilisateur sur mon ordinateur portable.

(Windows 7)

  1. Ouvrir le gestionnaire de tâches (Ctrl + Maj + Échap)
  2. Allez dans l'onglet Services
  3. Clique le Services... bouton
  4. Trouvez "Jenkins" dans la liste des services
  5. Cliquez avec le bouton droit de la souris sur "Jenkins" et cliquez sur Propriétés
  6. Cliquez sur l'onglet Connexion dans la fenêtre Propriétés de Jenkins
  7. Choisissez Ce compte: sous Connectez-vous en tant que:
  8. Entrez votre nom d'utilisateur et mot de passe
  9. Cliquez sur OK
  10. Redémarrez le service Jenkins
  11. Alors Bob est ton oncle.
5
Greg Burghardt
  1. Jenkins utilise la commande git clone uniquement pour la première fois lorsqu'un espace de travail est configuré pour un projet. D'autres instances utilisent la commande git ls-remote.

  2. J'ai eu le même problème lorsque j'ai configuré Jenkins. Le problème a été résolu en jouant avec les clés SSH. Cela ressemble aussi à un problème de configuration. Vérifiez si les clés SSH sont configurées pour le compte Jenkins.

Voir également la procédure pas à pas de configuration de SSH dans le lien fourni. Cela peut ne pas vous donner la solution exacte, mais peut vous diriger vers la solution.

http://oodlestechnologies.com/blogs/How-to-setup-Jenkins-With-Grails-on-Ubuntu

3
Mir S Mehdi

Je trouve que les autres solutions sont un peu "hacky" pour moi. Ce que j'ai fait est de déplacer le dossier Jenkins Home de/Users/Shared/vers/Users/[myacccount] /. De cette façon, mon Jenkins aura accès à mon dépôt et à mon SDK Android (car c'est là que j'utilise Jenkins). Modifiez ensuite la variable d'environnement JENKINS_HOME. Je l'ai fait en entrant le JENKINS_HOME dans mon .bash_profile (mais il y a d'autres façons de le faire).

Note: j'utilise OSX

0
gilsaints88