J'aimerais que Jenkins récupère automatiquement les données de mon référentiel privé hébergé sur Github. Mais je n'ai aucune idée de la façon d'accomplir cette tâche. J'ai essayé la documentation, en générant la clé ssh pour l'utilisateur jenkins et tout ce que je peux voir est: "impossible de cloner le dépôt". J'ai vérifié les URL - elles sont valides.
Des indices, peut-être connaissez-vous des documents / blogs / quoi que ce soit qui décrivent ce genre de choses?
Réponses:
Peut-être que la prise en charge de GitHub pour les clés de déploiement est ce que vous recherchez? Pour citer cette page:
Si c'est ce que vous essayez déjà et que cela ne fonctionne pas, vous voudrez peut-être mettre à jour votre question avec plus de détails sur les URL utilisées, les noms et l'emplacement des fichiers clés, etc.
Passons maintenant à la partie technique: comment utiliser votre clé SSH avec Jenkins?
Si vous avez, par exemple, un
jenkins
utilisateur unix, vous pouvez stocker votre clé de déploiement dans~/.ssh/id_rsa
. Lorsque Jenkins essaie de cloner le dépôt via ssh, il essaie d'utiliser cette clé.Dans certaines configurations, vous ne pouvez pas exécuter Jenkins en tant que propre compte d'utilisateur, et peut-être pas non plus utiliser l'emplacement de la clé ssh par défaut
~/.ssh/id_rsa
. Dans de tels cas, vous pouvez créer une clé à un emplacement différent, par exemple~/.ssh/deploy_key
, et configurerssh
pour l'utiliser avec une entrée dans~/.ssh/config
:Parce que tout ce que vous vous authentifiez auprès de tous les référentiels Github en utilisant
[email protected]
et que vous ne voulez pas que la clé ci-dessus soit utilisée pour toutes vos connexions à Github, nous avons créé un alias d'hôte github-deploy-myproject . Votre URL de clonage devient maintenantet c'est aussi ce que vous mettez comme URL de référentiel dans Jenkins.
(Notez que vous ne devez pas mettre ssh: // devant pour que cela fonctionne.)
la source
ssh-keygen
comme l'utilisateur Jenkins s'exécute en tant que ("jenkins" sur mon serveur Ubuntu). J'ai ensuite ajouté~jenkins/.ssh/id_rsa.pub
à la section de déploiement des clés du référentiel sur github.~
répertoire. Mais/var/lib/jenkins/.ssh/
pour que l'utilisateur jenkins par défaut utilise ces clés!/var/lib/jenkins
s'agit du répertoire personnel (~
) de l'jenkins
utilisateur.Could not match github-deploy-myproject:myuser/myproject
du journal du hook. Je l'ai entré comme URL de dépôt et les builds fonctionnent pour pouvoir accéder à GitHub. C'est juste la publication de GitHub qui ne parvient pas à déclencher la compilation.Une chose qui a permis à cela de fonctionner pour moi est de m'assurer que
github.com
c'est bien le cas~jenkins/.ssh/known_hosts
.la source
Si vous avez besoin que Jenkins accède à plus d'un projet, vous devrez:
1. ajouter une clé publique à un compte utilisateur github
2. ajouter cet utilisateur en tant que propriétaire (pour accéder à tous les projets) ou en tant que collaborateur dans chaque projet.
De nombreuses clés publiques pour un utilisateur système ne fonctionneront pas car GitHub trouvera la première clé de déploiement correspondante et renverra une erreur du type "ERREUR: Autorisation à l'utilisateur / repo2 refusée à l'utilisateur / repo1"
http://help.github.com/ssh-issues/
la source
Jenkins crée un utilisateur Jenkins sur le système. La clé ssh doit être générée pour l'utilisateur Jenkins. Voici les étapes:
Vous pouvez maintenant créer des informations d'identification Jenkins à l'aide de la clé SSH Sur le tableau de bord Jenkins Ajouter des informations d'identification
sélectionnez cette option
la source
J'ai eu un problème similaire avec gitlab. Il s'est avéré que j'avais restreint les utilisateurs autorisés à se connecter via ssh. Cela n'affectera pas les utilisateurs de github, mais au cas où des gens se retrouveraient ici pour des problèmes de gitlab (et autres), assurez-vous d'ajouter
git
leAllowUsers
paramètre dans/etc/ssh/sshd_config
:la source
Une autre option consiste à utiliser des jetons d'accès personnels GitHub :
https://github.com/my-username/my-project.git
) .github-token-for-my-username
J'ai testé cela sur Jenkins ver. 2.222.1 et le plugin Jenkins GitHub 1.29.5 avec un dépôt GitHub privé.
la source
Une alternative à la réponse de sergey_mo est de créer plusieurs clés ssh sur le serveur jenkins.
(Bien que, comme l'a dit le premier commentateur de la réponse de sergey_mo, cela peut finir par être plus douloureux que de gérer une seule paire de clés.)
la source