Подход, который я предпочитаю, заключается в следующей настройке (на самом деле, если вы работаете в проекте .NET):
- CruiseControl.NET.
- NANT задач для каждого отдельного шага. Nant.Contrib для альтернативных шаблонов CC.
- NUnit для запуска модульных тестов.
- NCover для выполнения покрытия кода.
- FXCop для отчетов статического анализа.
- Subversion для контроля версий.
- CCTray или аналогичный во всех блоках разработчиков для получения уведомлений о сборках, сбоях и т. Д.
Во многих проектах вы обнаружите, что существуют разные уровни тестов и действий, которые происходят, когда кто-то делает регистрацию. Иногда они могут увеличиваться во времени до того момента, когда может пройти много времени после сборки, прежде чем разработчик сможет увидеть, не сломали ли он сборку при регистрации.
В этих случаях я создаю три сборки (или, может быть, две):
- Сборка CI запускается при регистрации и выполняет чистые SVN Get, Build и запускает облегченные тесты. В идеале вы можете уменьшить это до минут или меньше.
- Более полная сборка, которая может быть ежечасной (если изменяется), которая выполняет те же функции, что и CI, но выполняет более всесторонние и длительные тесты.
- Ночная сборка, которая делает все, а также выполняет покрытие кода и статический анализ сборок, а также выполняет все шаги развертывания для создания ежедневных пакетов MSI и т. Д.
Ключевой особенностью любой системы CI является то, что она должна быть органичной и постоянно настраиваться. В CruiseControl.NET есть несколько замечательных расширений, которые регистрируют и собирают временные диаграммы сборки и т. Д. Для этапов и позволяют выполнять исторический анализ и, таким образом, позволяют непрерывно настраивать сборки, чтобы они были быстрыми. Менеджерам трудно смириться с тем, что сборочная коробка, вероятно, будет занимать вас пятую часть вашего рабочего времени, просто чтобы она перестала работать.