2016-01-20 6 views
1

Вот краткое описание моей текущей настройки. Мы используемJenkins не может запустить дугу

Git: система контроля версий Планировщик: обзор кода Jenkins: для непрерывной интеграции и беговой сборки. Плагины: развод фабрикатора, плагин для ведомых окон

У установки Jenkins есть мастер linux и окна & Mac Slaves. У меня также есть Phabricator Differential, включенный в проекты, и арканист установлен на всех узлах Дженкинса.

При выполнении проектов Windows сборка не выполняется со следующим сообщением об ошибке, в котором говорится, что он не может найти arc в указанной папке. Тем не менее, я могу вручную запускать дугу из папки, я убедился, что переменные окружения правильно настроен. Кто-нибудь сталкивался с этой проблемой раньше?

`The system cannot find the file specified 
    FATAL: command execution failed 
    java.io.IOException: Cannot run program "sh" (in directory "C:\Users\Jenkins\workspace\windows_project"): CreateProcess error=2, The system cannot find the file specified 
     at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) 
     at hudson.Proc$LocalProc.<init>(Proc.java:244) 
     at hudson.Proc$LocalProc.<init>(Proc.java:216) 
     at hudson.Launcher$LocalLauncher.launch(Launcher.java:816) 
     at hudson.Launcher$ProcStarter.start(Launcher.java:382) 
     at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1149) 
     at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1114) 
     at hudson.remoting.UserRequest.perform(UserRequest.java:121) 
     at hudson.remoting.UserRequest.perform(UserRequest.java:49) 
     at hudson.remoting.Request$2.run(Request.java:325) 
     at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at hudson.remoting.Engine$1$1.run(Engine.java:69) 
     at java.lang.Thread.run(Thread.java:745) 
     at ......remote call to winbuild2(Native Method) 
     at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1361) 
     at hudson.remoting.UserResponse.retrieve(UserRequest.java:221) 
     at hudson.remoting.Channel.call(Channel.java:753) 
     at hudson.Launcher$RemoteLauncher.launch(Launcher.java:929) 
     at hudson.Launcher$ProcStarter.start(Launcher.java:382) 
     at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:97) 
     at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:66) 
     at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) 
     at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779) 
     at hudson.model.Build$BuildExecution.build(Build.java:205) 
     at hudson.model.Build$BuildExecution.doRun(Build.java:162) 
     at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:537) 
     at hudson.model.Run.execute(Run.java:1744) 
     at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
     at hudson.model.ResourceController.execute(ResourceController.java:98) 
     at hudson.model.Executor.run(Executor.java:374) 
    Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified 
     at java.lang.ProcessImpl.create(Native Method) 
     at java.lang.ProcessImpl.<init>(ProcessImpl.java:386) 
     at java.lang.ProcessImpl.start(ProcessImpl.java:137) 
     at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) 
     at hudson.Proc$LocalProc.<init>(Proc.java:244) 
     at hudson.Proc$LocalProc.<init>(Proc.java:216) 
     at hudson.Launcher$LocalLauncher.launch(Launcher.java:816) 
     at hudson.Launcher$ProcStarter.start(Launcher.java:382) 
     at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1149) 
     at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1114) 
     at hudson.remoting.UserRequest.perform(UserRequest.java:121) 
     at hudson.remoting.UserRequest.perform(UserRequest.java:49) 
     at hudson.remoting.Request$2.run(Request.java:325)` 

дуги сообщение об ошибке:

[windows_box_testing] $ arc call-conduit differential.querydiffs 
The system cannot find the file specified 
FATAL: Cannot run program "arc" (in directory "C:\Users\Jenkins\workspace\windows_box_testing"): CreateProcess error=2, The system cannot find the file specified 
java.io.IOException: Cannot run program "arc" (in directory "C:\Users\Jenkins\workspace\windows_box_testing"): CreateProcess error=2, The system cannot find the file specified 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) 
    at hudson.Proc$LocalProc.<init>(Proc.java:244) 
    at hudson.Proc$LocalProc.<init>(Proc.java:216) 
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:816) 
+2

Ну, вы уверены, что проблема в запущенной дуге? Для меня журнал, похоже, указывает, что он не может найти 'sh'. Является ли 'sh' на вашем пути? – Anders

+0

ах! спасибо, что указали, что .. не может запустить «sh», оказалось одноразовой ошибкой, и я снова не видел его. Я обновил вопрос с сообщением об ошибке «cant run arc», с которым я столкнулся. – PhD

ответ

0

Как уже упоминалось Андерс, журнал указывает на Cannot run program "sh". Когда вы запускаете arc на поле, вы запускаете его из командной строки Windows или открываете оболочку, похожую на Linux.

Например, когда мне нужно запускать команды arc в Windows, во время входа в систему я обычно запускаю Git Bash, у которого есть версия sh. Тем не менее, чтобы получить эту машину и работать как сервер сборки с дугой, мне нужно было установить Cygwin и заставить Jenkins запустить сценарий там.

Надеюсь, это поможет.

+0

спасибо CEPA. Я обновил вопрос с сообщением об ошибке, о котором я хотел спросить. Ошибка «sh» была случайной ошибкой, с которой я снова не встречался. Итак, даже если я устанавливаю cygwin - работает ли Jenkins Windows Slave все команды через cygwin? не будет ли он использовать оболочку окон по умолчанию? – PhD

+0

Вы можете. Для этого вам понадобится реализовать плагин. Тем не менее, я обсуждал это с другими в своей команде и обнаружил, что мы в настоящее время разделены по этой теме. У нас есть некоторые сборки, которые используют плагин, и некоторые, которые используют стандартную командную строку. Если вы решите придерживаться своего подчиненного устройства, как он настроен в настоящий момент (и я не могу обвинить вас в этом), вы можете вызвать arc, используя 'arcanist \ bin \ arc.bat'. Это должно дать вам то, что вам нужно. В противном случае вы можете изучить использование плагинов Cygwin. – CEPA

Смежные вопросы