Какие существуют наборы инструментов для непрерывной интеграции с C++?

Наборы инструментов непрерывной интеграции для .NET, Java и других языков относительно хорошо определены, но рынок C++, похоже, отличается большим разнообразием.

Под «цепочкой инструментов» CI я конкретно подразумеваю инструменты для сценариев сборки, автоматического тестирования, проверки стандартов кодирования и т. д.

Какие команды C++ используют для инструментальных средств CI?

«(И почему наши инструментальные средства так ужасны по сравнению с программистами Java / .NET ??!?». Это уже совсем другой вопрос ....

quark 13.11.2009 02:42

Голосование закрыто как не по теме.

Ciro Santilli TRUMP BAN IS BAD 03.06.2015 16:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
31
2
13 709
6

Ответы 6

Visual Build Professional - мой любимый инструмент для объединения всех остальных инструментов. Только Windows, конечно, но он интегрируется со всеми разновидностями Visual Studio и множеством инструментов тестирования, инструментов управления исходным кодом, средств отслеживания проблем и т. д. Но это только окна является. Я знаю, что это еще не весь стек, но это только начало.

Доброго времени суток,

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

Один парень сел и написал инструменты, в основном сценарии оболочки, чтобы

  1. проверять текущую базу кода каждый час или около того и делать сборку, чтобы проверить, не сломалась ли она, и
  2. проверьте последнюю хорошую сборку, выполните полную сборку и запустите около 8000 регрессионных тестов.

Мы просто не могли найти ничего коммерчески доступного для этого, поэтому Чарли сел и написал это в сценариях оболочки bash, и это работало на HP-UX.

ваше здоровье, Роб

Как и в случае с любой другой задачей в C++, я почти не хромаю из-за непрерывной интеграции. Моя установка начинается с Eclipse. Я установил его для создания файлов make для моих проектов. У меня есть ant-скрипты, которые выполняют общие задачи сборки, выполняя команды make all или make clean в соответствующих make-файлах. Эти скрипты муравьев являются частью моего проекта, и мне приходится обновлять их, когда я добавляю новую конфигурацию сборки или новую часть в систему. Но это не так уж и плохо.

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

Мне пришлось использовать cppunit для тестирования и обработать результаты с помощью файла xslt, который я где-то нашел. У меня также есть неправильная метка ревизии svn в каждой сборке, потому что я не могу найти подходящую метку svn. Все, что я могу найти, - это наполовину завершенный код многолетней давности и люди, утверждающие, что другие люди делают это неправильно.

Мне кажется, что CC - умирающая система, но я не нашел ничего лучше для C++. С другой стороны, я также чувствую, что C++ - умирающий язык, так что, может быть, это больше, чем просто это.

C++ не умирает, но его сильные стороны проявляются только на нишевых рынках.

Tom 28.10.2009 04:01

Также ... Рекомендую посмотреть CxxTest, если есть время убить. На какое-то время проект почти замолчал, но я считаю, что его подхватили новые сопровождающие. По умолчанию он производит вывод, совместимый либо с GCC «file: line: message», либо с ICC / MSVC «file (line): message». Было бы очень легко создать для него jUnit-совместимый вывод XML.

Tom 28.10.2009 04:03

Другой вариант - buildbot.

Он написан на python, но не только для приложений на python. Он может выполнять любой скрипт для вашей сборки. Если вы посмотрите на их истории успеха, кажется, что существует множество языков.

Мы использовали бра для непрерывной интеграции, выполняемой центральным сервером сборки. Некоторые проекты перешли на buildbot.

Сейчас я перехожу к грабли и рассматриваю решения, описанные в этот блог. Фаулер упоминает, что ThoughtWorks иногда использует грабли для своих сценариев сборки в своей статье Непрерывная интеграция.

Мы реализовали нашу кроссплатформенную инфраструктуру непрерывной интеграции C++ с помощью Parabuild.

http://www.viewtier.com/products/parabuild/screenshots.htm

Мы смогли интегрировать с ним все инструменты контроля качества Win / Mac / Linux, и его действительно легко установить и поддерживать: это установка одним щелчком мыши на каждой платформе, а веб-интерфейс очень удобен.

При оценке нескольких серверов непрерывной интеграции основная проблема заключалась в том, что они были ориентированы на Java: Parabuild, с другой стороны, хорошо подходит для кроссплатформенной разработки C++ и рабочего процесса QA.

какой система сборки вы используете в Linux? Мы не можем найти ничего, что могло бы выполнять автономную сборку и, надеюсь, будет легко поддерживать и интегрировать с eclipse.

davka 30.12.2010 16:17

Мы используем cmake в качестве основной системы сборки: вы можете найти больше информации на cmake.org. Это кроссплатформенный, а также может создавать проекты eclipse, как описано в vtk.org/Wiki/CMake:Eclipse_UNIX_Tutorial#CMake_with_Eclipse.

stefano perticoni 30.12.2010 16:36

Обновление: в настоящее время мы также используем Jenkins jenkins-ci.org (был Hudson). Одна интересная способность Jenkins для распределенной сборки - это его способность удаленно устанавливать себя на подчиненных узлах сборки. Это очень удобно для масштабирования вашей инфраструктуры, поскольку вам просто нужно установить и поддерживать один и только один экземпляр Jenkins на главном узле сборки.

stefano perticoni 02.02.2012 12:12

Другие вопросы по теме