Все наши автоматизированные сборки выполняются с помощью Team City.
Самый автоматизированный проект, с которым мы работаем, - это, по сути, компилятор. Наш набор тестов состоит из около 20000 тестовых запросов, которые компилируются и выполняются, что выполняется при каждой регистрации. Раньше это занимало большую часть часа, но хранение полного набора тестов в ОЗУ на сборочной машине (вместо того, чтобы проверять его каждый раз) сокращает это до нескольких минут.
Каждую ночь запускается вторая сборка, которая запускает те же тесты, но под 4 различными профилями, в то время как работает под NCover, который выдает отчет о покрытии кода. Этот сценарий занимает несколько часов, поэтому он выполняется как ночная сборка. Другие внутренние отчеты создаются одновременно, чтобы гарантировать, что все работает как надо.
Обновления самого набора тестов запускаются отдельно и извлекаются на ОЗУ, готовые к следующему запуску. В противном случае проверка тестов занимала большую часть времени сборки. Часть набора тестов поступает из удаленного хранилища CVS, находящегося вне нашего контроля, и даже запрос об обновлениях добавляет несколько минут ко времени сборки, так что это также делается в сборке «Обновление тестов». Эта слабая связь означает, что нам пришлось ограничить сборки этого проекта одной машиной, но поскольку обратная связь очень быстрая, это не большая проблема.
Оказалось чрезвычайно полезным поддерживать "обычную" тестовую сборку как можно быстрее, сохраняя высокий охват кодовой базы. Любые медленные тесты (более секунды или около того) были перенесены в ночные сборки. В нашем случае проведение тестов в ОЗУ действительно помогло, хотя наш сценарий довольно специфичен. Я думаю, что издевательство над вашей базой данных является ближайшим аналогом. Мой совет, чтобы одна сборка была «скудной и подлой», удаляя любые «короткие» или медленные тесты, позволяя быстро реагировать, чтобы знать, что вы, вероятно, ничего не сломали. Другие сборки можно запускать на отдельных машинах или ночью, чтобы обеспечить быстрый отклик от быстрой сборки.
В перспективе самая длинная автоматизированная сборка, которую мы имеем (для другого проекта), иногда занимает больше суток, хотя, к счастью, ее не нужно регулярно запускать.