Дженкинс не может подключиться к хранилищу git

11

Я не могу настроить URL-адрес хранилища git таким образом, чтобы Дженкинс мог получить к нему доступ.

в разделе «Проект> Настройка> Управление исходным кодом» я установил URL-адрес репозитория «git @ store: repositories / testproject.git»

Я получаю эту ошибку:

Failed to connect to repository : Command "/usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password). 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

доступ с этим URL работает в оболочке:

jenkins@dilbert:~$ /usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git
git@store's password: 
4fd35a4f528e2f2921a52cfd03918b7cbde3d253    refs/heads/master

Меня просят пароль, и он работает.

Я связал этот же пароль с учетными данными в Jenkins с «git /», а также с «git @ store /». Никто не работал.

Пожалуйста, обратите внимание, что речь идет не о github, а о локальном хранилище git.

Обновить:

добавление ключа pub от мастера jenkins к ведомому сборщику помогло настроить конфигурацию:

ssh-copy-id jenkins@dilbert

теперь сборки терпят неудачу:

 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url git@store:repositories/testproject.git # timeout=10
Fetching upstream changes from git@store:repositories/testproject.git
 > /usr/bin/git --version # timeout=10
 > /usr/bin/git -c core.askpass=true fetch --tags --progress git@store:repositories/testproject.git +refs/heads/*:refs/remotes/origin/*
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from git@store:repositories/testproject.git
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:735)
    at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:983)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1016)
    at hudson.scm.SCM.checkout(SCM.java:484)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1270)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:531)
    at hudson.model.Run.execute(Run.java:1751)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:89)
    at hudson.model.Executor.run(Executor.java:240)
Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git -c core.askpass=true fetch --tags --progress git@store:repositories/testproject.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Магазин - мастер Дженкинса, Дилберт - раб сборки. SSH от хозяина до раба работает.

jenkins@store:~$ ssh dilbert uptime
 16:06:21 up 3 days, 18:53, 13 users,  load average: 0,31, 0,38, 0,50

есть идеи как это отладить?

Йорг Бейер
источник

Ответы:

5

аутентификация работает через ssh. Вы добавили открытый ssh-ключ пользователя jenkins для пользователя git на вашем git-сервере?

дайте мне знать, если вам нужны инструкции о том, как настроить ssh-аутентификацию, и я отредактирую этот пост здесь.

/РЕДАКТИРОВАТЬ:

рад, что у вас это работает. я посмотрел на официальном сайте jenkins подробное руководство по ssh-части конфигурации, но не смог найти ни одного.

Итак, вот краткий обзор - дайте мне знать, если это то, что вам нужно.

  1. jenkins slave (строительная машина) подключается к git-серверу (jenkins master)
  2. сборочная машина запускается от имени пользователя jenkins (например, jenkins @ dilbert: ~ $)
  3. git-сервер работает от имени пользователя git (например, git @ store: ~ $)
  4. Открытый ключ jenkins @ dilbert должен быть помещен в git @ store авторизованный_ключ
  5. запустить, jenkins@dilbert:~/.ssh$ ssh-copy-id git@storeчтобы скопировать открытый ключ jenkins @ dilbert ssh на git-сервер
kindaleek
источник
не могли бы вы объяснить, какие пользователи ssh-ключ добавить куда?
Йорг Бейер
пользователь jenkins должен хранить свой ключ публикации в <dir user home dir> /. ssh / id_rsa.pub, этот ключ необходимо добавить в <git user home dir> /. ssh / authorized_keys
kindaleek
выполнение "jenkins @ store: ~ / .ssh $ ssh-copy-id git @ store" заставляет jenkins принять конфигурацию (что является улучшением), но сборка на удаленном подчиненном устройстве jenkins завершается неудачно. любая идея?
Йорг Бейер
хорошо читать. к сожалению, мой опыт работы с git на этом заканчивается ... но я помню похожую проблему на работе. сейчас я могу ошибаться, но вы должны работать как пользователь (например, Joerg Beyer) на git-платформе, верно? пожалуйста, проверьте разрешение там (вы можете изменить разрешения пользователей в веб-интерфейсе для каждой группы, к которой они принадлежат). попробуйте установить его для разработчика для тестирования / EDIT: вы написали удаленное ведомое устройство jenkins - если оно использует другую пару ключей, вам нужно еще раз добавить открытый ключ к авторизованному ключу git
kindaleek
Точно сказать не могу. Я обновил вопрос. Какой ключ SSH мне нужно добавить куда?
Йорг Бейер