Вопрос

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

Это было полезно?

Решение

Я думаю, что важно отметить, что это то, что обычный строит помощь Поймать ошибки раньше, а не позже. Анкет Это не так имеют быть ежедневно, но достаточно часто. В идеале, он также может запустить ваши модульные тесты.

Цель состоит в том, чтобы выяснить, когда разбивается сборка перед последним этапом тестирования, чтобы найти их как можно скорее.

Просто настройте его, чтобы построить свой основной филиал разработки (ES).

Мы используем его на работе (хотя мы строим ежечасно), и часто, когда мы забываем установить, мы обнаруживаем о проблемах всего за несколько часов до выпуска.

Другие советы

Нужно немного добавить к этому (и @goodenoughs):

Но это звучит только как небольшая неприятность для управления распределенной версией.

Неоправданно нет - что делает сборка «сервера», это говорит вам, что ваш багажник будет строить и пройти свои тесты более или менее из чистой (тем меньше есть количество конфигурации, которую вам нужно сделать в вашей среде).

Я обдумываю переход на DVC, но даже сделав, чтобы вы перетащили мою непрерывную интеграцию из моих холодных мертвых рук.

Чтобы взять простой пример - вы разрабатываете функцию «A», он разрабатывает функцию B, B, или в какой -то момент, вам нужно сшить все вместе - если, когда вы совершаете, вы забудете добавить файл, приложение будет построить На вашей машине, но больше нигде. Поэтому, когда вы подталкиваете сборку к своему «стволу», непрерывная интеграция запустится, и сборка потерпит неудачу, и вы узнаете и, надеюсь, до Кто -нибудь тянет ваш не совсем полный код, вы сможете предпринять шаги.

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

Если вы добавили функцию - особенно ту, в которой другие люди имеют зависимость - чтобы быть в состоянии быть уверенным, что, когда она подталкивается к «жить», он строит и проходит тесты где -то, кроме вашей среды разработки, огромно. Более того, я развертываю из сборки с моего сервера сборки - вроде того, как определяет «окончательную» сборку. В конечном счете, у меня будут сборки развертывания пользователя. Неплохо сказать, что вы можете работать вокруг этого - вы не можете, если вам это нужно (и я имеют Схватили круглые ящики в офисе, чтобы найти и совершить отсутствующие файлы).

Это все немного сильнее? Не знаю - но мой сервер сборки - одна из тех вещей, которые получили, я не хочу возвращать.

Ежедневные сборки, я считаю, очень важны. Если у вас есть распределенная команда в разных временных зонах, то лучше всего найти время, которое примерно «конец дня» для большинства команды. Кроме того, если ежедневные сборки имеют автоматизированный тестовый компонент, то это более желательно.

В дни центральных систем управления источником я бы выступал за непрерывные сборки, работающие каждые 5-10 минут, когда что-либо изменяется в исходном коде. Поскольку ошибка компиляции может замедлить большую часть команды. Для организаций, работающих с распределенными системами управления источниками, непрерывная сборка может не потребоваться так сильно, поскольку разработчики касаются «нетронутой» кодовой базы непосредственно.

В идеале, если вы не строите что -то огромное, что занимает более полдня, чтобы построить, вы бы строили чаще, чем раз в день. После того, как вы настроили сервер непрерывной интеграции, например Гудзон или же Команда, сборки будут происходить автоматически, обычно каждый час или на каждом коммите, и вы будете уведомлены, если возникнут какие -либо проблемы.

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

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

Ежедневные сборки - это нормально.Вы определенно нуждаетесь в них, если у вас нет ничего другого, но, честно говоря, я думаю, что тест Джоэла немного устарел в наши дни.

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

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

Ежедневные сборки не важны. Ежедневные сборки это всегда успешнее есть (или те, где это сломано только на час). Наличие CI, когда сборка сломана в 70% случаев, не очень полезно, потому что, если вещь в основном сломана, это не помогает вам определить ошибку.

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

Идея «Daily Build» всегда состоит в том, чтобы иметь что -то готовое к теститерам и менеджерам проектов, чтобы у каждого было представление о том, каково реальное состояние проекта.

В прошлом с приложениями для настольных компьютеров после того, как «Daily Build» Tester или Manager Project могут немедленно запустить приложение, поэтому не нужно было упомянуть шаг развертывания.

Лицензировано под: CC-BY-SA с атрибуция
scroll top