Рекомендации по непрерывной интеграции для Mercurial / Kiln + MSBuild + MSTest - PullRequest
18 голосов
/ 12 января 2011

Наш исходный код хранится в репозиториях Kiln / Mercurial;мы используем MSBuild для создания нашего продукта, и у нас есть модульные тесты, использующие MSTest (модульные тесты Visual Studio).

Какие существуют решения для реализации машины непрерывной интеграции (например, машины сборки).

для этого необходимы следующие требования:

  • При необходимости следует запускать сборку (т. е. код изменился в репозиториях, о которых мы заботимся)
  • Перед фактической сборкой последняя версияисходный код должен быть получен из репозитория, из которого мы строим
  • Сборка должна собрать весь продукт
  • Сборка должна собрать все модульные тесты
  • Сборка должна выполнить все модулиtests
  • Резюме об успехе / неудаче должно быть отправлено после завершения сборки;это должно включать информацию о самой сборке, а также о том, какие юнит-тесты были неудачными, а какие - успешными.
  • В сводке должны быть указаны наборы изменений, которые еще не были в предыдущей успешной (!) сборке
  • Система должна быть настраиваемой, чтобы ее можно было собирать из нескольких ветвей (/ репозиториев).

В идеале, эта система должна работать на одном компьютере (наш продукт не такой большой)без каких-либо серверных компонентов.

Какие решения в настоящее время доступны?Каковы их плюсы / минусы?Из списка выше, что можно сделать, а что нельзя?

Спасибо

Ответы [ 4 ]

7 голосов
/ 13 января 2011

TeamCity, из JetBrains , создатели ReSharp, сделают все это. Вам придется настроить его для того, что конкретно означает «построить ваш продукт», но вы можете настроить все, что вы указали с ним.

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

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

Поставляется в двух вариантах: профессиональная и корпоративная. Профессиональная версия бесплатна, может содержать до 20 конфигураций сборки, 20 пользователей и 3 агента сборки. Корпоративная версия имеет неограниченное количество пользователей и конфигураций сборки, и вы также можете использовать безопасность на основе LDAP (например, пользователи, прошедшие проверку домена). Есть также некоторые другие бонусы от корпоративной версии. Вы также можете купить лицензии для большего количества агентов сборки, если вам нужно больше, чем начальные 3.

Теперь, если «нет серверных компонентов» означает, что вы не хотите, чтобы он действовал как веб-сервер, вам будет сложно найти что-то, что будет реагировать на ваши коммиты.

Однако, если вы имеете в виду, что вам не нужно устанавливать серверную ОС, то TeamCity может работать и на версиях Windows для рабочих станций. Это не значит, что вам не следует устанавливать для него подходящий сервер, но он будет работать на рабочей станции, если это то, что вам нужно.

5 голосов
/ 12 января 2011

Наш продукт BuildMaster делает все, что вы перечислили по дизайну, и есть бесплатная, несколько ограниченная версия (например, с вами может быть интегрировано только ограниченное количество провайдеров отслеживания проблем, смена базы данныхинструмент для упаковки скриптов не входит в бесплатную версию и т. д.) для 5 пользователей или менее.

2 голосов
/ 13 января 2011

То, что вы описали, является основами инструмента CI, поэтому каждый инструмент CI должен быть в порядке.
Я использую Cruise Control.NET , но он содержит ошибки Mercurial и не очень прост на первый взгляд. Я тем не менее доволен этим. Другие инструменты, которые приходят мне в голову: Hudson , Team Build (из TFS) и TeamCity .

Я не пробовал другие инструменты, но вы можете увидеть плюсы и минусы здесь:

EDIT : Я забыл упомянуть, что Hudson и Cruise Control.net - это проект с открытым исходным кодом, вы можете легко писать плагины и патчи для вашей установки.

EDIT² : ошибки Mercurial, похоже, исправлены в следующей версии ccnet 1.6 (изменения, внесенные в магистраль на этой неделе).

0 голосов
/ 13 января 2011

Всегда есть BuildBot , который мне нравится (и я добавил немного кода).Его довольно легко настроить и запустить в любой ОС, а также выполнять простые задачи, как вы говорите, и удивительно гибко, если вам это нужно.

Чего вам не хватает, так это скребков для журналов и батарей/ или генераторы отчетов, которые поставляются с другими более коммерческими CI-серверами, особенно для сред Enterprise-y.

Он также достаточно хорошо масштабируется, его используют Mozilla и Chromium, среди прочих.

...