Cygwin Cruisecontrol не может выполнять команды - PullRequest
0 голосов
/ 16 июля 2009

У меня, как я надеюсь, будет простая проблема. Тем не менее, это поставило меня в тупик весь день.

Я работаю с cruisecontrol в windows, настраиваюсь через Cygwin. У меня есть некоторый опыт работы с CC на платформе Linux, и многое из того, что я делаю, очень похоже. Однако большинство команд, которые я пытаюсь выполнить в разделе «Расписание» файла config.xml, выдают ошибку.

Вот исключение:

ExecBuilder - Could not execute command: /cygdrive/d/Program\ Files/Subversion/bin/svn
net.sourceforge.cruisecontrol.CruiseControlException: Encountered an IO exception while attempting to execute 'net.sourceforge.cruisecontrol.builders.ExecScript@b80f1c'. CruiseControl cannot continue.
at net.sourceforge.cruisecontrol.builders.ScriptRunner.runScript(ScriptRunner.java:133)

Вот несколько примеров команд, которые я пытался выполнить, которые выдают этот тип ошибки.

<exec command="${CCLoc}/projects/${project.name}/IOSdllScript"/>

-Запускает скрипт, который я тестировал за пределами cruisecontrol.bat, и он запускается. Включает #! / Bin / sh в качестве первой строки

<exec command="${CCLoc}/projects/${project.name}/EmptyFile"/>

- По сути, пустой текстовый файл, доказывающий, что проблема не имеет никакого отношения к моему сценарию.

<exec command="/cygdrive/d/Program\ Files/Subversion/bin/svn" args="cleanup" workingdir="${svndir}"/>

-Попробуйте очистить SVN по каталогу. Я дважды проверил пути и орфографию.

Одна команда, которую я тестировал, работала и не давала этой ошибки. Эта команда была сенсорной.

<exec command="touch" args="ABC.txt"/>

Я не уверен, почему работает только касание, а больше ничего нет.

1 Ответ

0 голосов
/ 16 июля 2009

Re: Комментарий GrzegorzOledzki:

Правильно, но вы дали мне идею, которая в итоге помогла, хотя это далеко от идеального решения.

Я заметил, что все команды, которые терпят неудачу, используют пути, а команда, которая работает, - нет. Я попробовал еще несколько вещей, помня об этом.

Что работает:

<exec command="touch" workingdir="projects" args="ABC.txt"/>
<exec command="svn" args="cleanup" workingdir="${svndir}/Iosdll"/>

Эти пути должны быть относительными, а не абсолютными. (

Вещи, которые все еще не работали:

Попытка запустить мой скрипт, используя это формат (та же ошибка)

Попытка запустить скрипт, который не существует (та же ошибка !!!)

Выполнение нескольких exec-команд ... как программа сверху вниз (работает только первый)

По-видимому, это исключение ExecScript IO - это некое обобщение, которое не может выполнить ошибку команды. Возиться с command = "path / script" или command = "script" workingdir = "path" не дало никаких результатов. Поэтому я просто вошел в / etc / profile (эквивалент bash_profile cygwin) и добавил путь к моему сценарию в PATH. Сейчас такого рода работы.

<exec command="IOSdllScript.bat"/>

Редактировать: Кажется, работает лучше, как командный файл, чем сценарий при прохождении через Cygwin.

Я все еще хотел бы знать, как сделать это "правильным" способом, т.е. IE без необходимости изменять переменную PATH в cygwin.

...