Интеграция сборки на основе eclipse / cdt в непрерывную интеграцию

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

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

Пока мне удалось проверить проект (легко от jenkins) и построить его в безголовом режиме с помощью eclipse, используя следующую команду:

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 в Windows)
  • Мне не удалось извлечь журналы сборки (в идеале они должны быть в файле): чтобы интегрировать в свою непрерывную информацию, мне нужно иметь возможность анализировать журналы сборки, чтобы отображать интересную информацию (подумайте о сломанных файлах)
  • В идеале я бы хотел получить от Eclipse прямой статус (код возврата), который указывает, прошел или не прошел.

Есть идеи, как добиться такого поведения?

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

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

person Bruce    schedule 20.06.2012    source источник


Ответы (1)


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

Примечания:

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

Итоговая (рабочая!) Команда:

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
person Bruce    schedule 22.06.2012