Убирать или не чистить - PullRequest
       21

Убирать или не чистить

3 голосов
/ 28 апреля 2011

Я работаю над проектом среднего размера, который использует непрерывную интеграцию для выполнения регулярных сборок. В данный момент у нашего проекта довольно длительное время сборки (45-55 минут), и мы искали, какие оптимизации можно сделать, чтобы сократить это время.

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

Итак, я обращаюсь к сообществу Stack Overflow, чтобы узнать, в чем заключается лучшая практика ... всегда ли ваша непрерывная интеграция делает чистую сборку? Существуют ли конкретные причины для и / или против этого?

Я опубликую свои мысли ниже, чтобы никого не пристрастить, но мне действительно интересно услышать другие мнения.

Ответы [ 3 ]

1 голос
/ 28 апреля 2011

Для непрерывной интеграции важно иметь быстрый оборот.Я сделал этот компромисс раньше, и я бы сказал, что оно того стоит.Иногда это позволяет ускользнуть, но выигрыш в получении обратной связи того стоит.

В дополнение к частым инкрементным сборкам, имеют менее частые чистые сборки.Это дает вам большинство преимуществ обоих подходов.

1 голос
/ 28 апреля 2011

Причиной постоянной интеграции является раннее выявление всех проблем, а не одних проблем быстро, а других - ну, когда-либо.

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

Чистка - часто единственный способ убедиться, что телосложение хорошее.Альтернативой может быть периодическая очистка (скажем, по ночам), поэтому наихудший случай - это день за день до обнаружения проблемы (это достаточно рано?).

Каков бюджет улучшенных серверов сборки.Можете ли вы ускорить сборку - оптимизация, более / более быстрое оборудование, параллельные этапы сборки, более быстрый компилятор и т. Д. Можете ли вы перейти к более быстрому инструменту сборки, такому как scons или аналогичному, который будет использовать все 8 процессоров вашего сервера сборки(особенно если вы используете make)?

Я бы очистил.

0 голосов
/ 28 апреля 2011

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

Лично я рекомендую очистить каталог сборки, но не удаляя ваш источник.Это предполагает, что ваш SCM может правильно синхронизировать ваш источник.


Требуется ~ 15 минут для очистки?Это довольно долгое время, мне было бы интересно узнать, что занимает так много времени.

...