У меня есть кластер Jenkins с автомасштабированием на AWS, который запускает агентов через JNLP. И Master, и Slaves работают на Ubuntu. Я не совсем понимаю, где Дженкинс на самом деле хранит ключи SSH для Gitlab, и если / как предполагается, что ведомые устройства будут его использовать. Всякий раз, когда я запускаю задание Дженкинса на своих рабах, я получаю следующее:
git clone git@git.mydomain.co.uk/myproject.git
Cloning into 'build-scripts'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Я могу подтвердить поведение, установив SSH-соединение на подчиненные устройства и запустив ту же команду вручную. Подчиненный .jar запускается от имени пользователя «Jenkins», но я не могу использовать клон Git, если я являюсь пользователем по умолчанию «ec2-user», «Jenkins» или даже как root. У меня установлены подключаемые модули Git, Git Credentials и Git Server, которые, как я раньше считал, будут копировать ключи на ведомое устройство при запуске. Я могу запустить ту же самую команду SSH от мастера, и она отлично работает, а также мастер может разговаривать с Git для клонирования репозиториев как многоотраслевых конвейеров.
Это может быть простое решение, но я немного озадачен. Кто-нибудь знает, что требуется, чтобы ведомые устройства могли использовать SSH / копировать ключ в другое место?
Я предполагаю, что ваш ключ ssh не добавлен в вашу учетную запись github или подчиненный процесс Jenkins работает с другим пользователем, чем тот, который вы использовали для запуска git из командной строки. В этом случае вам необходимо добавить ключ ssh в свой аккаунт на github или утвердить первоначальную проверку ключа хоста для этого пользователя, прежде чем вы сможете запустить git в Jenkins. (вы знаете - это сообщение вы получаете при первом подключении по ssh: