Нет никаких реальных недостатков, за исключением того, что с CI ваш сервер будет загружен.
Причины для этих сборок:
NB: Каждое утро у вас естьполностью встроенный установщик релиза, который вы можете протестировать.Вы знаете все свои сборки кода, и каждый день у вас есть «готовый» выпуск, который вы можете отправить, если хотите.Это намного лучше, чем когда программист проводит день за шагом, разбирая документ «Как создать релиз», шаг за шагом создавая установщик каждый раз, когда вы готовы выпустить новую версию!И ваши тестировщики могут протестировать полный пакет выпуска, поэтому вы уверены, что каждая часть вашего выпуска и процесса установки работает так, как будто вы получаете ежедневную тренировку.
CI: Это простобыстрая сборка, которая запускается каждый раз, когда кто-то регистрируется. Он сообщает вам, если вы включаете некомпилируемый код, чтобы автор мог немедленно решить проблему и минимизировать сбои для других членов команды.Вы можете тратить много времени, когда 4 или 5 программистов получают последний код, а затем обнаруживают, что не могут выполнять какую-либо работу в течение 2 часов, пока Фред не исправит свою неудачную регистрацию.Знание о сломанной сети позволяет вашим программистам избегать выполнения Get, если код не был проверен как работающий.
Чтобы реализовать NB и CI, вам сначала нужно получить сборку, которая будет работать на вашем сервере.
Если у вас есть работающий TFS, то для создания сервера сборки вам просто нужно установить инструменты разработки (VS2008 и все остальное, что нужно для сборки кода, например 3-йсторонние библиотеки / инструменты сборки и т. д.), как если бы это был компьютер разработчика, и он готов к использованию в качестве сервера сборки.Просто щелкните правой кнопкой мыши по папке Builds и выберите «Создать новую сборку», и вы сможете понять большую ее часть по мере продвижения.Вы должны дать ему имя, настроить сопоставления рабочей области, чтобы указать, где создавать код, и настроить выходную папку для «перетаскивания» результатов, и все будет хорошо.
Вам может понадобиться настроить настройки ваших проектов, чтобы эта работа работала хорошо, например, разработчики ужасно вставляют ссылки на "C: \ Projects ..." в свои решения, которые часто ломаются, когдапроект перемещается на диск D: встроенного сервера и т. д. Кроме того, довольно неприятно, что сервер сборки будет собирать код в разных местах, чем на ваших ПК разработчика, так что вы можете обнаружить, что части процесса сборки сломаются, и вам придется перенастроить вещинапример, фиксированные местоположения для ссылок и т. д., чтобы они работали как на машинах Build, так и на машинах Dev.
Добавьте как можно большую часть процесса (очистить, получить код, собрать его, выполнить модульные тесты), запутывать двоичные файлы, подписывать двоичные файлы, создавать установщики, подписывать установщики, копировать в папку развертывания) автоматически, так что NB может создавать все aи вы получаете полностью выпускаемый продукт нажатием одной кнопки.Компьютеры хороши в этом, поэтому не оставляйте подверженным ошибкам и дорогостоящим из-за того, что человеческий раб работает весь день, чтобы сделать установщик!
Установите NB на полнуюперестроить (это должно быть по умолчанию) и использовать настройки триггеров, чтобы запускать его каждую неделю в (например) 1:00.NB должен собрать все (хорошая, тщательная сборка).
Скопируйте настройки сборки NB для создания CI.В файле проекта MSBuild установите следующие свойства: IncrementalGet = true, IncrementalBuild = true, ForceGet = false.Это преобразует его в быструю инкрементную сборку.В Workspace Mapping скрывайте или удаляйте как можно больше папок, чтобы минимизировать объем кода, который он получает из системы контроля версий, чтобы поддерживать его быстрым.Настройте сборку только на один вариант (например, Release), чтобы она была быстрой.В триггерах (щелкните правой кнопкой мыши на сборке и отредактируйте ее), установите ее для сборки при каждой регистрации.
Запустите монитор сборки на всех машинах разработчика.Это помещает значок в ваш трек значков и дает вам дополнительные уведомления, когда сборки начинаются, завершаются и дают сбой.Если ваша сборка CI не удалась, вы немедленно узнаете об этом.
Теперь у вас должна быть готовая ночная сборка для тестирования каждое утро, и всякий раз, когда кто-либо проверяет какие-либо изменения, новый инкрементсборка начнется, и через несколько минут вы узнаете, не сломали ли вы кодовую базу в управлении исходным кодом.
(У нас есть третья сборка, которая является инкрементальной тестовой сборкой. Это то же самое, что иCI строит, но он также запускает все наши модульные тесты, которые выполняются каждую ночь, и разработчики могут запускать его всякий раз, когда они хотят проверить кодовую базу на сервере (мы используем это как механизм стробирования перед переходом в тестовую ветвь).Он намного медленнее, чем тест CI, поэтому он не используется для сборки CI - вы хотите, чтобы сборка CI заканчивалась как можно быстрее)
Примечание: чтобы заставить работать CI, вам иногда потребуетсясделать полную перестройку.В диалоговом окне «Построение очереди» введите следующие параметры командной строки, чтобы заставить это:
/p:IncrementalGet=false;ForceGet=true;IncrementalBuild=false
Нет никаких методов, которые были бы «лучше», чем CI.Вы можете (и должны) использовать CI в дополнение ко всем другим процессам, которые вы реализуете.