Я бы хотел, чтобы Дженкинс автоматически получил данные из моего частного репозитория, размещенного на Github. Но я понятия не имею, как выполнить эту задачу. Попробовал документацию, генерирующую ssh-ключ для пользователя jenkins, и все, что я вижу, это: «невозможно клонировать репо». Я проверил URL - они действительны.
Есть какие-нибудь подсказки, может быть, вы знаете какие-нибудь документы / блоги / что-нибудь, что описывает подобные вещи?
Ответы:
Возможно, вы ищете поддержку GitHub для ключей развертывания ? Чтобы процитировать эту страницу:
Если это то, что вы уже пытаетесь, и это не работает, вы можете обновить свой вопрос с более подробной информацией об используемых URL, именах и расположении файлов ключей и т. Д.
Теперь о технической части: как использовать ваш SSH-ключ с Дженкинсом?
Если у вас есть, скажем,
jenkins
пользователь Unix, вы можете сохранить свой ключ развертывания~/.ssh/id_rsa
. Когда Дженкинс попытается клонировать репо через ssh, он попытается использовать этот ключ.В некоторых случаях вы не можете запустить Jenkins как собственную учетную запись пользователя и, возможно, также не можете использовать расположение ключа ssh по умолчанию
~/.ssh/id_rsa
. В таких случаях вы можете создать ключ в другом месте, например~/.ssh/deploy_key
, и настроить егоssh
для использования с записью в~/.ssh/config
:Поскольку все, что вы аутентифицируете во всех репозиториях Github,
git@github.com
и не хотите, чтобы вышеуказанный ключ использовался для всех ваших соединений с Github, мы создали псевдоним хоста github-deploy-myproject . URL вашего клона теперь становитсяи это также то, что вы указали в качестве URL-адреса хранилища в Jenkins.
(Обратите внимание, что вы не должны помещать ssh: // вперед, чтобы это работало.)
источник
ssh-keygen
от имени пользователя Jenkins («jenkins» на моем сервере Ubuntu). Затем я добавил~jenkins/.ssh/id_rsa.pub
в раздел ключей развертывания репозитория на github.~
каталог. Но/var/lib/jenkins/.ssh/
для пользователя jenkins по умолчанию использовать эти ключи!/var/lib/jenkins
это домашний каталог (~
) дляjenkins
пользователя.Could not match github-deploy-myproject:myuser/myproject
на журнал логов. Я ввел это как мой Repo URL, и сборки работают так, чтобы он мог получить доступ к GitHub. Это просто сообщение от GitHub, которое не запускает сборку.Одна вещь, которая заставила это работать для меня, должна удостовериться, что
github.com
это в~jenkins/.ssh/known_hosts
.источник
Если вам нужен Jenkins для доступа к более чем
одному проекту, вам необходимо: 1. добавить открытый ключ к одной учетной записи пользователя github
2. добавить этого пользователя в качестве владельца (для доступа ко всем проектам) или в качестве коллаборатора в каждом проекте.
Многие открытые ключи для одного пользователя системы не будут работать, потому что GitHub найдет первый соответствующий ключ развертывания и отправит сообщение об ошибке типа «ОШИБКА: разрешение пользователю / repo2 отказано пользователю / repo1»
http://help.github.com/ssh-issues/
источник
Jenkins создает пользователя Jenkins в системе. Ключ ssh должен быть сгенерирован для пользователя Jenkins. Вот шаги:
Теперь вы можете создать учетные данные Jenkins с помощью ключа SSH На панели управления Jenkins Добавить учетные данные
выберите эту опцию
источник
У меня была похожая проблема с gitlab. Оказывается, я ограничил пользователей, которым разрешено входить через ssh. Это не повлияет на GitHub пользователей, но в случае , если люди в конечном итоге здесь gitlab (и т.п.) вопросов, чтобы вы добавить
git
вAllowUsers
настройки в/etc/ssh/sshd_config
:источник
Другой вариант - использовать токены личного доступа GitHub :
https://github.com/my-username/my-project.git
)github-token-for-my-username
Я проверил это на Дженкинс вер. 2.222.1 и плагин Jenkins GitHub 1.29.5 с частным репозиторием GitHub.
источник
Альтернативой ответу от sergey_mo является создание нескольких ключей ssh на сервере jenkins.
(Хотя, как сказал первый комментатор к ответу sergey_mo, это может оказаться более болезненным, чем управление одной парой ключей.)
источник