Authentifier Jenkins CI pour Github repository privé
J'aimerais que Jenkins pour automatiquement récupérer les données de mon repository privé hébergé sur Github.
Mais je n'ai aucune idée de la façon d'accomplir cette tâche.. Essayé de la documentation, de génération de clé ssh pour l'utilisateur jenkins et tout ce que je peux voir, c'est: "impossible de cloner le repo". J'ai vérifié Url - elles sont valides.
Des indices, vous savez peut-être certains docs/blogs/whatever qui sont de décrire ce genre de choses?
- Je peux répondre à cette même question, vous pouvez voir la réponse dans le lien ci-dessous: jenkins & GitHub
Vous devez vous connecter pour publier un commentaire.
Peut-être de GitHub soutien pour déployer des touches de est ce que vous recherchez? Pour citer cette page:
Si c'est ce que vous êtes déjà essayer et ça ne fonctionne pas, vous pouvez mettre à jour votre question avec plus de détails de l'Url en cours d'utilisation, les noms et l'emplacement des fichiers de clés, etc.
Maintenant, pour la partie technique: Comment utiliser votre clé SSH avec Jenkins?
Si vous avez, disons, un
jenkins
utilisateur unix, vous pouvez stocker vos déployer clé dans~/.ssh/id_rsa
. Lorsque Jenkins essaie de cloner le repo via ssh, il va essayer d'utiliser cette clé.Dans certaines configurations, vous ne pouvez pas exécuter Jenkins comme un compte d'utilisateur, et éventuellement aussi ne peut pas utiliser la clé ssh par défaut emplacement
~/.ssh/id_rsa
. Dans de tels cas, vous pouvez créer une clé dans un autre emplacement, par exemple,~/.ssh/deploy_key
, et configurerssh
à utiliser avec une entrée dans~/.ssh/config
:Parce que tous vous authentifier pour tous les dépôts Github à l'aide de
[email protected]
et vous ne voulez pas la clé ci-dessus pour être utilisé pour toutes vos connexions à Github, nous avons créé un alias d'hôte github-déployer-myproject. Votre clone URL devient maintenantet c'est aussi ce que vous mettez comme référentiel URL dans Jenkins.
(Notez que vous devez pas mettre ssh:// en avant pour que cela fonctionne.)
ssh-keygen
que l'utilisateur Jenkins s'exécute ("jenkins" sur mon serveur Ubuntu). J'ai ensuite ajouté~jenkins/.ssh/id_rsa.pub
pour déployer les touches de la section du dépôt sur github.~
répertoire. Mais dans/var/lib/jenkins/.ssh/
par défaut jenkins de l'utilisateur à l'utilisation de ces clés!/var/lib/jenkins
est le répertoire d'accueil (~
) pour lajenkins
de l'utilisateur.myuser/myproject
?? ouvert à une question à stackoverflow.com/questions/25535632/...Could not match github-deploy-myproject:myuser/myproject
dans le crochet du journal. J'ai entré mon Repo URL construit et faire du travail de sorte qu'il peut accéder à GitHub. C'est juste le post de GitHub qui ne parvient pas à déclencher la construction.Host github-deploy-myproject
àHost github.com
et à l'aide de[email protected]:myuser/myproject
pour les URL dans le référentiel peut être ce dont vous avez besoin (basé sur ma configuration, YMMV bien sûr)Une chose que vous avez du travail pour moi est de faire en sorte que
github.com
est dans~jenkins/.ssh/known_hosts
.Si vous avez besoin de Jenkins pour accéder à plus de 1 projet, vous devrez:
1. ajouter la clé publique à un github compte d'utilisateur
2. ajoutez cet utilisateur en tant que Propriétaire (accès à tous les projets) ou en tant que Collaborateur dans chaque projet.
Beaucoup de clés publiques pour un utilisateur du système ne fonctionnera pas parce que GitHub trouverez d'abord appariés déployer la clé et renverra une erreur comme "ERREUR: Permission de l'utilisateur/repo2 refusé à l'utilisateur/repo1"
http://help.github.com/ssh-issues/
Jenkins crée un utilisateur Jenkins sur le système. La clé ssh doit être généré pour l'utilisateur Jenkins.
Voici les étapes:
Maintenant, vous pouvez créer un Jenkins informations d'identification à l'aide de la clé SSH
Jenkins tableau de bord
Ajouter Des Informations D'Identification
sélectionnez cette option
J'ai eu un problème similaire avec gitlab. Il s'avère que j'avais limité les utilisateurs qui sont autorisés à accéder via ssh. Ce qui n'affecte pas les utilisateurs de github, mais dans le cas où les gens se retrouvent ici pour gitlab (et autres) à des questions, assurez-vous d'ajouter
git
à laAllowUsers
paramètre dans/etc/ssh/sshd_config
:Une alternative à la réponse de sergey_mo est de créer de multiples clés ssh sur le serveur jenkins.
(Même si, comme le premier intervenant à sergey_mo réponse l'a dit, ce sera peut-être plus douloureux que la gestion d'une seule paire de clés.)