Стоит ли запускать все автоматизированные инспекции при каждом построении?
Возможно, некоторые инспекции можно запускать в составе вторичных или
периодических построений?
Имеются ли инспекции, которые можно запускать лишь для определенных подсистем, а
не для всего кода?
Ниже приведен список возможных решений по увеличению производительности инспекции
программного обеспечения.
Удалите неиспользуемые и ненужные инспекции.
Ограничьте количество повторяемых инспекций.
Уменьшите частоту некоторых инспекций.
Осуществление распределенного интеграционного построения
Если объем кода чрезвычайно велик, и вы уже увеличили скорость процессора, памяти и диска
на машине интеграционного построения, а также приняли другие меры для уменьшения
продолжительности построения, включая снижение частоты проверок компонентов и системы,
но считаете, что построение все еще слишком продолжительно, следует обратить внимание на
распределенное интеграционное построение.
Существуют инструменты интеграционного построения, которые позволяют объединить
мощности нескольких машин. Такие инструменты, как BuildForge и ParaBuild, предоставляют
средства для распределения интеграционных построений. Данными способностями обладают и
другие серверы CI, например CruiseControl, однако распределенные интеграционные
построения%- это сложная проблема с еще более сложным решением. Перенос части процесса
построения на другую машину может подразумевать копирование больших файлов, что может
даже больше замедлить построение. Перед тем как пытаться реализовать этого решение,
попробуйте принять%все другие%меры по уменьшению продолжительности построения.
Переоценка
Итак, мы обсудили несколько подходов, включая повышение производительности
тестирования, процесса построения, модернизацию аппаратных средств и изменение дизайна
проекта. Какие из улучшений оказались эффективны и какова продолжительность построений
сейчас? Теперь пришло время попытаться распространить усовершенствования на остальную
часть группы и решить, нужен ли дополнительный цикл улучшений. Если вы уже осуществили
данный процесс один раз, то новый цикл усовершенствований пройдет быстрее и проще.
КАК ЭТО БУДЕТ РАБОТАТЬ У ВАС?
На настоящий момент вы, вероятно, вполне согласны с тем, что выполнение интеграционного
построения при каждом изменении программного обеспечения позволит снизить множество
рисков в проекте. Но вы можете подумать: "Это прекрасно сработало в%вашем%проекте, но это не
сработает в нашем, поскольку у нас нет ни времени, ни ресурсов, ни денег" или "У нас
совершенно%другой%тип проекта, вовсе не похожий на описанный здесь". Приведенные ниже
вопросы и ответы основаны на ряде подобных мнений.
"Мой проект насчитывает семь миллиардов строк кода. Как это может сработать у
меня?"
Да ладно, не преувеличивайте, ваш проект вряд ли имеет именно "семь миллиардов" строк
кода, скажем, вы работаете над очень большим проектом и полагаете, что для внедрения CI в
нем слишком много препятствий. Однако чем больше проект, тем больше количество
изменений, а следовательно, тем необходимей CI. Это подобно высказыванию: "Я предпочел бы
не знать о проблемах в нашем коде или предпочел бы подождать, пока не забуду, над чем я
работал тогда". Кроме того, внедрение CI в большой проект не займет больше времени, чем в
малый. Просто в большом проекте и преимуществ будет больше, и вероятность успеха выше, и
больше гибкости в работе с большим количеством элементов проекта.
Основной интерес большого проекта%- это быстрое построение, а CI позволяет запускать
длительные процессы периодически (или поэтапно, как описано ранее), а не непрерывно. Сюда
относится проверка компонентов, системы, функций и инспекции. Разделение базового кода на