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