139 votes

Authentifier le référentiel privé Jenkins CI for Github

Je voudrais que Jenkins automatiquement récupérer les données de mon dépôt privé hébergé sur Github. Mais je n’ai aucune idée de comment accomplir cette tâche... Essayé de la documentation, générant ssh-clé pour utilisateur de jenkins et tout ce que je vois est : « impossible de cloner le repo ». J’ai vérifié l’URL - ils sont valides.

Des indices, peut-être que vous connaissez quelques docs/Articles/whatever qui décrivent ce genre de trucs ?

139voto

Mark Longair Points 93104

Peut-être GitHub du soutien pour déployer des touches est ce que vous recherchez? Pour citer cette page:

Quand dois-je utiliser une de déployer la clé?

Simple, lorsque vous avez un serveur qui a besoin de tirer l'accès à un seul privé des pensions.

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 d'utilisateur unix, vous pouvez stocker vos déployer clé en ~/.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 de configurer ssh à l'utiliser avec une entrée en ~/.ssh/config:

Host github-deploy-myproject
    HostName       github.com
    User           git
    IdentityFile   ~/.ssh/deploy_key
    IdentitiesOnly yes

Parce que tous vous authentifier pour tous les dépôts Github à l'aide de git@github.com 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 maintenant

git clone github-deploy-myproject:myuser/myproject

et c'est aussi ce que vous mettez comme référentiel URL dans Jenkins.

(Notez que vous devez de ne pas mettre ssh:// devant pour que cela fonctionne.)

37voto

Edward Samson Points 1493

Une chose que j’ai ce travail pour moi est de s’assurer que est en .

13voto

sergey_mo Points 232

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 du type "ERREUR: Permission de l'utilisateur/repo2 refusé à l'utilisateur/repo1"

http://help.github.com/ssh-issues/

1voto

Jon Points 146

J’ai eu un problème similaire avec gitlab. Il s’avère que j’avais limité les utilisateurs qui sont autorisés à vous connecter via ssh. Cela ne concerne les utilisateurs de github, mais dans le cas où les gens finissent par questions ici pour gitlab (et autres), s’assurer que vous ajoutez à la dans `` :

-1voto

orlanthi Points 121

Une alternative à la réponse de sergey_mo est de créer plusieurs ssh keys sur le serveur de jenkins, tel que documenté par chalien sur githib :

https://github.com/chalien/multiple-public-SSH-Key-GitHub

(Bien que comme l’a dit le premier commentateur à la réponse de sergey_mo, ceci peut finissent par être plus douloureux que de gérer une seule paire de clés.)

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