Отказано в доступе (publickey) при загрузке репозитория PUBLIC GitHub с Jenkins; частные репо доставить в порядке - PullRequest
0 голосов
/ 27 января 2019

У меня есть настройка CI, которая выглядит следующим образом:

  • Частный главный репозиторий (shoot-for-the-moon)

  • Частный подмодуль (ShooterBase)

  • Публичный подмодуль (UnrealUtilityAI)

Все размещено на GitHub.Дженкинс может клонировать оба частных репозиториев, но терпит неудачу при клонировании публичного репо - точная напротив того, что, по вашему мнению, могло бы произойти.Я запускаю Jenkins в Windows, а Jenkins работает как служба Windows (нет выделенного пользователя Jenkins).Закрытый ключ не имеет парольной фразы, связанной с ним;это я сгенерировал заново, когда впервые столкнулся с этой проблемой.

Вот журнал:

04:23:05  > C:\Program Files\Git\cmd\git.exe rev-parse --is-inside-work-tree # timeout=10
04:23:05 Fetching changes from the remote Git repository
04:23:05  > C:\Program Files\Git\cmd\git.exe config remote.origin.url git@github.com:Jay2645/shoot-for-the-moon.git # timeout=10
04:23:06 Fetching upstream changes from git@github.com:Jay2645/shoot-for-the-moon.git
04:23:06  > C:\Program Files\Git\cmd\git.exe --version # timeout=10
04:23:06 using GIT_SSH to set credentials A private key with no passphrase.
04:23:06  > C:\Program Files\Git\cmd\git.exe fetch --tags --force --progress git@github.com:Jay2645/shoot-for-the-moon.git +refs/heads/*:refs/remotes/origin/* # timeout=180
04:23:07  > C:\Program Files\Git\cmd\git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
04:23:07  > C:\Program Files\Git\cmd\git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
04:23:07 Checking out Revision da16645fd46e977a876986f4005f5e7b8d5be57e (refs/remotes/origin/master)
04:23:07  > C:\Program Files\Git\cmd\git.exe config core.sparsecheckout # timeout=10
04:23:08  > C:\Program Files\Git\cmd\git.exe checkout -f da16645fd46e977a876986f4005f5e7b8d5be57e
04:23:09 Commit message: "Updated packaging settings."
04:23:09  > C:\Program Files\Git\cmd\git.exe rev-list --no-walk da16645fd46e977a876986f4005f5e7b8d5be57e # timeout=10
04:23:09  > C:\Program Files\Git\cmd\git.exe remote # timeout=10
04:23:09  > C:\Program Files\Git\cmd\git.exe submodule init # timeout=10
04:23:10  > C:\Program Files\Git\cmd\git.exe submodule sync # timeout=10
04:23:11  > C:\Program Files\Git\cmd\git.exe config --get remote.origin.url # timeout=10
04:23:11  > C:\Program Files\Git\cmd\git.exe submodule init # timeout=10
04:23:12  > C:\Program Files\Git\cmd\git.exe config -f .gitmodules --get-regexp ^submodule\.(.+)\.url # timeout=10
04:23:12  > C:\Program Files\Git\cmd\git.exe config --get submodule.Plugins/ShooterBase.url # timeout=10
04:23:12  > C:\Program Files\Git\cmd\git.exe config -f .gitmodules --get submodule.Plugins/ShooterBase.path # timeout=10
04:23:12  > C:\Program Files\Git\cmd\git.exe submodule update Plugins/ShooterBase # timeout=180
04:23:14  > C:\Program Files\Git\cmd\git.exe config --get submodule.Plugins/UnrealUtilityAI.url # timeout=10
04:23:14  > C:\Program Files\Git\cmd\git.exe config -f .gitmodules --get submodule.Plugins/UnrealUtilityAI.path # timeout=10
04:23:14  > C:\Program Files\Git\cmd\git.exe submodule update Plugins/UnrealUtilityAI # timeout=180
04:23:17 hudson.plugins.git.GitException: Command "C:\Program Files\Git\cmd\git.exe submodule update Plugins/UnrealUtilityAI" returned status code 1:
04:23:17 stdout: 
04:23:17 stderr: Cloning into 'D:/CI/Plugins/UnrealUtilityAI'...
04:23:17 git@github.com: Permission denied (publickey).
04:23:17 fatal: Could not read from remote repository.
04:23:17 
04:23:17 Please make sure you have the correct access rights
04:23:17 and the repository exists.
04:23:17 fatal: clone of 'git@github.com:Jay2645/UnrealUtilityAI.git' into submodule path 'D:/CI/Plugins/UnrealUtilityAI' failed

Сначала я подумал, что это просто что-то смешное с разрешениями или что-то странное,поэтому я попытался выполнить точно такую ​​же команду в обычной командной строке Windows, добавив только кавычки и удалив комментарий:

C:\Users\jayst>cd /d D:\CI

D:\CI>"C:\Program Files\Git\cmd\git.exe" submodule update Plugins/UnrealUtilityAI
Cloning into 'D:/CI/Plugins/UnrealUtilityAI'...
Submodule path 'Plugins/UnrealUtilityAI': checked out '1fbb5cea8a3485c902e4e159b410fb921e3e89a7'

В обычной командной строке работает нормально!Единственное отличие в том, что мне не хватает команд Git config (C:\Program Files\Git\cmd\git.exe config -f .gitmodules --get submodule.Plugins/ShooterBase.path и т. Д.), Которых я даже не заметил, пока не сделал этот пост - но даже тогда я не знаю, вызывают ли они проблему иликак отключить их, даже если они были причиной проблемы.

Я, честно говоря, озадачен - такое чувство, что я в отсталой земле.Мое единственное предположение, что Дженкинс каким-то образом устанавливает переменную окружения при переключении с частного на публичное репо, и это что-то портит.Я попытался установить GIT_SSH Переменная среды на <PATH_TO_SSH_EXE> -i <PATH_TO_MY_PRIVATE_KEY>, но я не уверен, правильно ли я его настроил, так как я получаю сообщение о том, что не удается найти мой закрытый ключ (я пробовал Windows иПути в стиле Unix).

Это сводит меня с ума;Я могу легко исправить это, просто войдя в командную строку, но это реальная боль, если сборка не удалась, пока я не войду и не исправлю ее вручную.Я в растерянности относительно того, что делать.Любая помощь?

...