2017-01-31 2 views
4

J'utilise une version d'entreprise de GITHUB. Je crée un serveur de compilation automatique pour construire nos projets. Ces projets ont des sous-modules. Comme ce serveur de construction n'est pas "moi" (il ne peut pas posséder mes informations d'identification d'utilisateur), il doit être capable de télécharger les projets depuis GIT via la fonction "deploy keys" de github. (Par projet lire les clés ssh seulement)Plusieurs clés ssh avec sous-modules git

Les limites sont les suivantes: 1. github me attend à vous connecter en tant ssh: //[email protected] 2. github applique une politique lorsqu'aucune deux projets peuvent partager une clé de déploiement (contrairement aux clés d'utilisateur ordinaires qui sont enregistrées pour l'ensemble du serveur github). [question subsidiaire, quel est le raisonnement derrière cela?!] 3. Mon informatique d'entreprise ne permet pas les comptes partagés arbitraires: Un utilisateur est toujours associé à une personne, il ne peut pas appartenir à un serveur. En tant que tel, je pense que ma seule option est d'utiliser la fonction de clés de déploiement avec différentes clés pour différents projets. (Déploiement clés ont été essentiellement mis au point avec ce scénario à l'esprit ...)

La seule manière que je trouvais que je peux configurer plusieurs clés est: https://gist.github.com/jexchan/2351996

Maintenant en ce qui concerne les sous-modules: Cette astuce ne peut fonctionner que pour le haut niveau projets, car c'est le seul endroit où je peux spécifier un nom d'hôte personnalisé, comme dans: "git clone git @ personnalisé-git-host-name" commande.

Lorsqu'il passe à init et met à jour les sous-modules , il utilise le nom d'hôte quel qu'il soit dans le référentiel parent (qui correspond à mygithubserver.com d'origine). Lorsque nos développeurs utilisent leurs clés personnelles, cela fonctionne parfaitement. Cependant, pour le build-server qui a besoin de différentes clés de déploiement pour différents projets, cela échoue.

Existe-t-il un moyen de contourner ce problème et d'utiliser des clés SSH différentes pour différents projets sur le même serveur?

Existe-t-il une manière idiote de faire partager deux clés de déploiement à deux projets? (Je ne suis pas autorisé à modifier le code source de GitHub, car cela est vraiment énorme IT géré par le serveur githib d'entreprise)

Répondre

2

Je l'ai résolu en créant un petit fichier de script dans le projet parent contenant les éléments suivants:

git submodule init 
ssh-agent sh -c "ssh-add -D; ssh-add some_private_key.pem; git submodule update some_dubmodule" 
ssh-agent sh -c "ssh-add -D; ssh-add another_private_key.pem; git submodule update another_submodule" 
+0

Avait exactement le même problème, dans .gitmodules j'ai quitté l'url git à distance d'origine. J'ai changé l'URL distante à l'intérieur du sous-module à la place. – Sanandrea