Разрешение запрещено (публикация) при настройке Дженкинса
Я настраиваю Jenkins на сервер Win Win Server, и у меня возникают проблемы с настройкой Jenkins для подключения к GitHub. Я получаю следующую ошибку:
Command "git.exe fetch -t [email protected]:USER/REPO.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: Permission denied (publickey).
fatal: The remote end hung up unexpectedly
ERROR: Could not fetch from any repository
FATAL: Could not fetch from any repository
hudson.plugins.git.GitException: Could not fetch from any repository
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:950)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:908)
at hudson.FilePath.act(FilePath.java:758)
at hudson.FilePath.act(FilePath.java:740)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:908)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1184)
at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:537)
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:425)
at hudson.model.Run.run(Run.java:1376)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:175)
Проверенные вещи
- Служба Jenkins работает под моим именем пользователя.
- Я изменил свой SSH-ключ, так что у него больше нет пароля.
- Я подтвердил, что мой SSH-ключ действителен, выполнив ту же команду, что и Jenkins, используя msysgit.
- Проверено, что все мои пути верны.
Настройки конфигурации Jenkins
- Jenkins 1.418
- Плагин GitHub 0.5
- Git плагин 1.1.9
msysgit Работает, но подсказка CMD не
Когда я перехожу к действительному репо и выполняю команду из приглашения DOS, он также терпит неудачу.
Есть ли у вас какие-либо идеи, что я могу потерять?
Спасибо за вашу помощь.
Ответы
Ответ 1
Как я уже говорил, указание переменной HOME
является ключом при использовании протокола ssh.
Поскольку Windows не имеет HOME
, вам необходимо явно определить ее в любой каталог, который вы хотите.
Однако Vestnik комментарии:
Я указал, чтобы переопределить HOME
на вебе Windows node, чтобы указать его на C:\jenkins
.
Я поставил правильный id_rsa
под C:\jenkins\.ssh
, но все еще есть эта проблема.
Мой подчиненный агент работает как служба под учетной записью SYSTEM.
Два совета:
- вам нужно сделать свой ведомый дисплей '
set
', чтобы проверить, установлен ли HOME при использовании с учетной записью SYSTEM.
Если это не так, это может означать, что вам нужно добавить эту переменную в "переменные системной среды", а не "переменные среды пользователя".
![display env from the job definition]()
- Не забудьте указать
id_rsa
и id_rsa.pub
в каталоге %HOME%\.ssh
: вам нужны как открытые, так и приватные ключи ssh. (как упоминалось в git клоне с проблемой ssh ")
Если у вас есть параметризованная сборка, вы также можете определить HOME
таким образом и проверить, соответствует ли ваш ведомый правильное значение для HOME
:
![define custom variables]()
Ответ 2
Есть два плагина в jenkins, связанных с ssh, которые могут быть использованы: Опубликовать через SSH и Плагин Jenkins SSH.
Первый плагин дает доступность для установки глобального ключа ssh, а второй плагин дает доступность для установки различных ключей ssh.
Далее вам нужно установить еще два плагина, которые будут использоваться в конфигурации проекта GitHub Plugin и Jenkins Git Плагин.
Плагин GitHub будет использоваться для установки проекта GitHub.
Плагин Jenkins Git будет использоваться для установки "URL-адреса репозитория" и других вещей, таких как ветка и т.д.
Все плагины доступны на вкладке, доступной в диспетчере подключаемых модулей Jenkins.
Скопировано из мое сообщение в блоге по теме:
Конфигурация Дженкинса:
Плагин Jenkins SSH дает возможность устанавливать закрытый ключ для каждого хоста, второй плагин выполняет задание для глобального хоста.
Если используется Jenkins SSH-плагин, то на удаленных хостах SSH записываются хост, пользователь, кодовая фраза и путь к закрытому ключу.
Если используется функция" Опубликовать через SSH ", то в настройке SSH введите парольную фразу и вставьте закрытый ключ или напишите путь к нему.
Конфигурация проекта:
Проект GitHub https://github.com/GitUser/iOS-project/
* Управление исходным кодом
- > Git
- > → Хранилища
- > → - > URL-адрес репозитория: git @github.com: GitUser/iOS-project.git
- Вам нужно настроить ветку или взять по умолчанию -
* Построить триггеры
- > Опрос SCM - Установлен -
- > Расписание: * * * * *
* Build
- > Executed Shell
-> -> Command: xcodebuild -target iOS-project -configuration AdHoc -sdk iphoneos5.0 clean
-> -> Command: agvtool new-version -all $BUILD_NUMBER
-> -> Command: xcodebuild -target iOS-project -configuration AdHoc -sdk iphoneos5.0
-> -> Command: xcrun -sdk iphoneos5.0 PackageApplication -v $WORKSPACE/build/AdHoc-iphoneos/iOS-project.app -o $WORKSPACE/build/AdHoc-iphoneos/iOS-project-$BUILD_NUMBER.ipa PROVISIONING_PROFILE="<provisioning profile>"
-> -> Command: curl http://testflightapp.com/api/builds.json -F [email protected]$WORKSPACE/build/AdHoc-iphoneos/iCushion-1.0-$BUILD_NUMBER.ipa -F api_token=<api_token> -F team_token=<team_token> -F notes="This is an autodeploy build from Jenkins!" -F notify=True -F distribution_lists="<distributedlist 1>, <distributedlist 2>"
Ответ 3
Похоже, что плагин git теперь предоставляет способ указать Jenkins в домашний каталог.
- Нажмите кнопку добавления учетных данных.
![enter image description here]()
- Наведите Jenkins на свой секретный ключ.
![enter image description here]()
- Выберите новые учетные данные из списка.
![enter image description here]()
Ответ 4
В моей среде (Jenkins 64-бит с 32-разрядной Java-версией, работающей в 64-разрядной версии Windows Server 2016) решение было положено в папку C:\Windows\SysWOW64\config\systemprofile \.ssh, Согласно Git Документация плагина:
По умолчанию установщик Jenkins Windows устанавливает Jenkins для запуска в качестве службы в Windows, которая работает как "Локальная системная учетная запись", а не ваша учетная запись пользователя. Поскольку в "Учетной записи локальной системы" не установлены ключи SSH или known_hosts, "wone > clone" будет висеть во время сборки. Можно сохранить Jenkins как "Локальную учетную запись системы" и клонировать репозитории через SSH, убедившись, что "Локальная системная учетная запись" настроена с правильно настроенным .ssh-каталогом (то есть id_rsa, id_rsa.pub, AND known_hosts)