2017-01-31 5 views
4

Я использую корпоративную версию GITHUB. Я создаю автоматический сервер сборки для создания наших проектов. Эти проекты имеют подмодули.Несколько ключей ssh ​​с подмодулями git

Поскольку этот сервер сборки не является «мной» (он не может обладать моими учетными данными), он должен иметь возможность загружать проекты из GIT с помощью функции «развернуть ключи» github. (За проект только для чтения SSH-ключей)

Ограничения являются: 1. GitHub ожидает меня войти в систему как SSH: //[email protected] 2. GitHub проводит политику, где нет двух проектов не может делиться ключ развертывания (в отличие от обычных пользовательских ключей, которые зарегистрированы для всего сервера github). [побочный вопрос, каковы причины этого ?!] 3. Мой корпоративный ИТ не разрешает использование общих произвольных учетных записей: пользователь всегда связан с человеком, он не может принадлежать серверу.

Как таковой, я считаю, что мой единственный вариант - использовать функцию разворачивания ключей с разными ключами для разных проектов. (Развернуть ключи были в основном разработаны с этим сценарием в виду ...)

Единственный способ я нашел, который я могу настроить несколько ключей: https://gist.github.com/jexchan/2351996

Теперь относительно подмодулей: Этот трюк может работать только для верхнего уровня проектов, потому что это единственное место, где я могу указать собственное имя хоста, например, в команде «git clone git @ custom-git-host-name».

Когда он переходит к инициализации и обновлению подмодулей , он использует любое имя хоста в родительском репо (которое является исходным mygithubserver.com). Когда наши разработчики используют свои личные ключи, это работает безупречно. Однако для сервера сборки, которому нужны разные ключи развертывания для разных проектов, это не удается.

Есть ли способ обойти это и использовать git разные ключи ssh для разных проектов на одном сервере?

Есть ли какой-то глупый способ совместного использования двух проектов? (Мне не разрешено изменять исходный GitHub код, так как это действительно огромная IT управляемых предприятий githib сервер)

ответ

2

Я решил, создав небольшой файл сценария в родительский проект, содержащий следующие:

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

Имел точно такую ​​же проблему, в .gitmodules я оставил оригинальный git удаленный url. Вместо этого я изменил удаленный URL-адрес внутри подмодуля. – Sanandrea

Смежные вопросы