Преимущества сервера сборки?

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

Каковы наиболее важные преимущества использования сервера сборки для вашего проекта?

Ответ 1

Есть больше преимуществ, чем просто найти ошибки компилятора раньше (что важно):

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

Ответ 2

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

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

И, конечно, вы можете сказать им, что команда будет выглядеть древней в современном мире, если вы не будете запускать непрерывные сборки:)

Ответ 3

См. Непрерывная интеграция: преимущества непрерывной интеграции:

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

...

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

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

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

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

Другим побочным эффектом, о котором часто не упоминалось, является то, что инструменты CI, такие как CruiseControl.NET, становятся центральным эмитентом всей версии номера для всех веток, включая внутренние RC. Затем вы можете заставить свою команду всегда отправлять сборку, которая вышла из инструмента CI, даже если это пользовательская версия продукта.

Ответ 4

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

Ответ 5

  • Когда ваш босс говорит: "Мне нужна копия последнего кода как можно скорее", вы можете получить его в < 5 минут.

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

  • Вы будете уверены, что у вас есть автоматизированный способ создания кода, который не зависит от библиотек/переменных среды/сценариев/и т.д., которые настроены в среде разработчиков, но трудно реплицировать другие которые хотят работать с кодом.

Ответ 6

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

Ответ 7

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

Стабильная среда сборки
Предотвращает оправдания, такие как "Эта ошибка иногда возникает при построении на машине Джо". Предотвращает случайное использование старых зависимых библиотек при работе на Mikes.

Истинное собаководство
У вас тестеры и пользователи имеют настоящий опыт работы с клиентами. У ваших разработчиков есть четкая ссылка для воспроизведения ошибок.

Ответ 8

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

Сначала очистить DLL Hell. Когда кто-то строит на своей локальной машине, они могут указывать на любую справочную папку. Многие проекты строились с неправильными версиями dll от кого-то, не обновляющего свою локальную папку. На сервере сборки он всегда будет построен из одного источника. Все, что вам нужно сделать, это получить последние, чтобы получить последние ссылки.

Вторая важная вещь для нас - это способ поддержать проекты, которые мало знают о них. Любой разработчик может пойти захватить источник и сделать небольшое исправление, если это необходимо. Им не нужно возиться с часами работы или поисками ссылок. У нас есть заграничная команда, которая работает в основном на проекте, но если есть какое-то быстрое решение, которое нам нужно делать в часы работы в США, мы можем захватить последние и иметь возможность строить, чтобы не беспокоиться о поврежденном источнике или о том, что не было проверено. Закрытые проверки сохраняют всех остальных на время вашей команды.