2012-06-20 2 views
7

Мне нужно повторно использовать крупный проект на C++, который в настоящее время разрабатывается внутри eclipse, используя функцию создания CDT, mingw и cdt (без внешних make-файлов или среды сборки). Сам проект состоит из множества подпроектов.Уничтожить сборку eclipse/cdt в непрерывную интеграцию

Я хочу интегрировать эту сборку в сервер непрерывной интеграции (jenkins именно) и, таким образом, иметь возможность автоматизировать сбор без головы.

До сих пор мне удалось оформить проект (легко от Jenkins) и иметь его построить в обезглавленный режиме, используя затмение, используя следующую команду:

C:\prog\EclipseCdt\eclipse -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import %WORKSPACE%\project1 -import %WORKSPACE%\project2 -import %WORKSPACE%\project3 -build all 

Пришло, однако, не достаточно:

  • сборка асинхронна: предыдущая команда возвращает (фактически это вилки), пока я ожидаю, что она будет содержать контекст, пока у меня не будет результата (например, с make на linux или devenv на окнах)
  • Мне не удалось извлечь журналы сборки (в идеале, их в файле): чтобы интегрировать в свою непрерывную информацию, мне нужно иметь возможность анализировать мои журналы построения, чтобы отображать интересную информацию (думать о разбитых файлах)
  • В идеале, Я хотел бы получить от Eclipse прямой статус (код возврата), который указывает на пропуск или отказ.

Любая идея, как это сделать?

Обратите внимание, что:

  • используя альтернативный (внешний) построить систему в настоящее время не вариант (я должен держать CDT удалось построить, он имеет много сложной истории)
  • Я уже смотрел на переполнение стека и google и не удалось найти способ сделать это, несмотря на кажущуюся простоту моей потребности.
  • Я сейчас нахожусь в Windows 7/mingw 4.5.2/Eclipse IDE для разработчиков C/C++ Версия: Indigo Release Build id: 20110615-0604, но я думаю, что вопрос - это x-платформа

ответ

7

похоже, что если я заработаю eclipse из cmd в интерактивном режиме, это вилки, если они начинаются с битового скрипта, это не так. поэтому поставить предыдущую линию в jenkins было достаточно, чтобы сделать трюк.

Примечания:

  • вам нужно добавить -data параметр, чтобы определить местоположение вашего рабочего места (я чищу строить каждый раз)
  • как обычно, винить окна и поставить кавычки ....
  • --launcher.suppressErrors : в случае, если что-то идет awoc, предотвращает появление всплывающего окна eclipse (которое фактически не отображается, таким образом блокирует сборку)

Final (working!) Команда:

C:\prog\EclipseCdt\eclipse --launcher.suppressErrors -nosplash -data "%WORKSPACE%" -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import "%WORKSPACE%\project1" -import "%WORKSPACE%\project2" -import "%WORKSPACE%\project3" -build all 

РЕДАКТИРОВАТЬ

  • добавлен --launcher.suppressErrors