Подтвердить что ты не робот

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

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

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

Требования для этого:

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

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

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

Спасибо

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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