Question

Le problème

J'essaie de créer mon application dans Jenkins, et elle se trouve sur un dépôt privé sur Github, il existe également un sous-module privé.

Je peux cloner le référentiel privé dans Jenkins en configurant ses informations d'identification, mais Jenkins ne peut pas cloner le sous-module, voici le résultat d'une build ayant échoué :

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

Voici ce que j'ai essayé de faire dans Jenkins

  • J'ai essayé de définir le comportement supplémentaire "Comportement avancé du sous-module", sans succès.
  • J'ai essayé de configurer une nouvelle étape avant d'exécuter les tests avec phpunit :

git submodule update --init --recursive

  • J'ai également essayé de définir un référentiel git sur le projet de mon sous-module, pas seulement sur le référentiel principal en cours de test, pas de chance non plus.

Tous provoquent l'erreur indiquant que Jenkins ne peut pas trouver le référentiel du sous-module.

Des idées sur la façon dont puis-je résoudre ce problème ?

(Le nom d'utilisateur, les chemins et les référentiels sont corrects, je viens de les modifier pour les publier ici)

Était-ce utile?

La solution

Résolu.Dans mes informations d'identification, j'utilisais une clé SSH directe (option "Entrer directement"), au lieu de la placer dans un fichier.

Je viens de mettre les clés (publiques et privées) dans ~/.ssh et de changer mes informations d'identification pour l'option "Depuis le maître Jenkins ~/.ssh".

Le problème était que le sous-module n'utilisait pas les informations d'identification que j'avais spécifiées dans le référentiel principal, il essayait d'utiliser la clé ssh par défaut (.ssh/id_rsa).

Une autre solution consiste à transmettre -i my_key à l'étape du sous-module git (cela n'est nécessaire que si votre clé ne se trouve pas dans le chemin par défaut (~/.ssh/id_rsa) )

N'oubliez pas non plus de donner les autorisations correctes sur vos clés, dans mon cas j'ai dû :

chown apache ~/.ssh/id_rsa*
chmod 700 ~/.ssh/id_rsa*
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top