«hg» не может быть найден при вызове плагином Jenkins Mercurial - PullRequest
3 голосов
/ 22 июля 2011

По сути, это журнал, который я получаю:

Создано пользователем dontcare4free

$ hg clone --rev default ssh: //hg@bitbucket.org/dontcare4free/my-repository / var / lib / jenkins / workspace / Custom-MC-Server

* не удалось импортировать расширение hgext.imerge: нет модуля с именем imerge
remote: проверка ключа хостане удалось.
abort: нет подходящего ответа от удаленной hg!
ОШИБКА: не удалось клонировать ssh: //hg@bitbucket.org/dontcare4free/my-repository
[Custom-MC-Server] $ hg log--рев.--template {узел}
java.io.IOException: не удается запустить программу "hg" (в каталоге "/ var / lib / jenkins / workspace / My-Repository"): java.io.IOException: error = 2,Нет такого файла или каталога
в java.lang.ProcessBuilder.start (ProcessBuilder.java:475)
в hudson.Proc $ LocalProc. (Proc.java:244)
в hudson.Proc $ LocalProc.(Proc.java:216)
в hudson.Launcher $ LocalLauncher.launch (Launcher.java:698)
в hudson.Launcher $ ProcStarter.start (Launcher.java:329)
в hudson.Launcher$ ProcStarter.join (Launcher.java:336)
в hudson.plugins.mercurial.MercurialSCM.joinWithPossibleTimeout (MercurialSCM.java:299)
в hudson.plugins.mercurial.HgExe.p1jj)
at hudson.plugins.mercurial.HgExe.tip (HgExe.java:171)
at> hudson.plugins.mercurial.MercurialSCM.calcRevisionsFromBuild (MercurialSCM.java:255)
в hud.scSCM._calcRevisionsFromBuild (SCM.java:304)
в hudson.model.AbstractProject.calcPollingBaseline (AbstractProject.java:1205)
в hudson.model.son.model.AbstractProject.checkout (AbstractProject.java:1194)
в hudson.model.AbstractBuild $ AbstractRunner.checkout (AbstractBuild.java:555)
в hudson.model.AbstractBuild $ AbstractRunner.run (AbstractBuild.Java: 443)
на hudson.model.Run.run (Run.java:1376)
на hudson.model.FreeStyleBuild.run (FreeStyleBuild.java:46)
на hudson.model.ResourceController.execute (ResourceController.java:88)
at hudson.model.Executor.run (Executor.java:175)
Причина: java.io.IOException: java.io.IOException: error = 2, нет такихфайл или каталог
в java.lang.UNIXProcess. (UNIXProcess.java:164)
в java.lang.ProcessImpl.start (ProcessImpl.java:81)
в java.lang.ProcessBuilder.start (ProcessBuilder.java:468)
... еще 18
Плагин уведомлений Jabber: отправка уведомлений: -snip-
Плагин уведомлений Jabber: Уведомление подозреваемых
Плагин уведомлений Jabber: Уведомление виновных
Уведомлениевышестоящие проекты завершения работы
Закончено: НЕИСПРАВНОСТЬ

Насколько я понимаю, это означает, что он не может найти исполняемый файл hg.Тем не менее, я не получаю таких ошибок, когда пытаюсь выполнить hg как шаг сборки (выполнение оболочки) с отключенной интеграцией Mercurial.

Я пробовал с и без изменения установочного каталога и исполняемого файла, и я дажепопытался скомпилировать (ну, что бы там ни было) Mercurial вручную из исходного кода, но все безрезультатно.

РЕДАКТИРОВАТЬ: Глупый меня.Я полностью неправильно прочитал журнал.Проблема не связана с тем, что он вообще не находит исполняемый файл hg, но на самом деле это потому, что я забыл правильно настроить свой ключ.

Ответы [ 3 ]

8 голосов
/ 03 ноября 2011

Проверка http://localhost:8080/systemInfo Переменные среды> PATH отображает "/ usr / bin: / bin: / usr / sbin: / sbin". Я не могу определить, почему это все, что Дженкинс видит. При входе в систему как пользователь, настроенный демоном, я получаю гораздо больший набор путей.

Я смог помочь плагину Mercurial найти «hg», создав символическую ссылку на hg.

sudo ln -s /usr/local/bin/hg /usr/bin/hg 

Я попытался добавить следующее в / etc / profile (я перезапустил на всякий случай)

PATH=$PATH:/usr/local/bin
export PATH

Я подтвердил, что это изменило мой путь, набрав

echo $PATH

в Терминале. Однако этот путь не обнаружился в Дженкинсе

Я могу работать с решением sym link, но мне бы очень хотелось понять, где Jenkins получает свой путь.

4 голосов
/ 05 января 2012

Nullable прав, проблема не в том, что исполняемый файл hg не может быть найден, а в том, что у пользователя jenkins нет открытого ключа.

Решение заключается в следующем:

  1. Войдите в систему как пользователь jenkins
  2. Убедитесь, что у пользователя jenkins есть открытый ключ ssh, который должен быть в .ssh / id_rsa.pub
  3. Если нет, создайтеодин с использованием ssh-keygen и не указывайте ключевую фразу
  4. Выпуск cat .ssh/id_rsa.pub, скопируйте вывод.
  5. Войдите в bitbucket или github, добавьте открытый ключ, который вы только что скопировали, в свою учетную запись
  6. Попробуйте еще раз!

Надеюсь, что это поможет, удачи всем с этой проблемой.

0 голосов
/ 22 июля 2011

Моей первой мыслью будет то, что вы должны проверить путь к исполняемому файлу hg в настройке jenkins, если есть такая опция, она может не указывать правильный путь.

Если это не такпомогите, убедитесь, что hg находится на PATH.

Похоже, что может быть какая-то настройка, необходимая в соответствии с этой страницей http://www.pixelastic.com/blog/162:failed-to-import-extension-hgext-imerge-warning-on-dreamhost

Может быть, это может решить вашу проблему?

...