Как сделать ежедневную сборку проекта.net из А - Я?

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

  1. что такое ежедневная сборка в целом?
  2. какая разница, если я создам свой собственный проект в VS?
  3. Как нам сделать это наилучшим образом для проекта.net (желательно с использованием TFS)?
  4. больше вещей, о которых я должен / должен знать?

Любая ссылка на статью / книги / другие вопросы приветствуются.

Спасибо

8 ответов

Решение

1) Из записи в Википедии:

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

2) Не должно быть никакой разницы между ночной сборкой и сборкой из VS, однако идея ежедневной сборки заключается в том, что она автоматизирована. Таким образом, вы можете запланировать его запуск в 3 часа ночи:)

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

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

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

Статья от Джоэла. Хорошо читать.

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

Мы используем Hudson для ночных сборок, но вы также можете использовать Cruise control.Net. Потому что мы делаем Java и.NET Hudson - лучшее решение. Если у вас есть сервер Team Foundation от MS, вы также можете использовать это.

Пожалуйста, посмотрите на это для интеграции Hudson и C#.

Также рассмотрите возможность интеграции Stylecop, FXCop и модульного тестирования в свой сервер сборки.

На эту тему есть отличная статья от Мартина Фаулера.

http://martinfowler.com/articles/continuousIntegration.html

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

Кроме того, сборка с собственного компьютера предотвращает ежедневные проверки основного кода. Опять плохая практика.

Ночная сборка должна работать с минимально необходимыми инструментами и библиотеками. Использование целого dev env на сборочной машине - плохая идея. Полная сборка также будет содержать несколько быстрых и грязных автоматических тестов для запуска кода после его компиляции, сборки и развертывания в среде test / pre-prod prov. NUnit, Selenium и FxCop - ваши друзья.

  1. Автоматическая сборка каждый день (или ночь) всей системы. Сборка системы отчетов об ошибках сборки моей почты и т. Д.
  2. Он построен на отдельном компьютере, он гарантирует, что вы не забыли проверить какие-либо файлы или установили недокументированные зависимости только на вашем компьютере. И это сообщает об ошибках.
  3. Не останавливайтесь на ежедневных сборках, переходите к непрерывной интеграции, которая собирается после каждой регистрации. Взгляните на Cruisecontrol.net.
  1. Ежедневные сборки предназначены для того, чтобы как минимум раз в день ваше приложение находилось в состоянии сборки. Они обычно управляются автоматизированным процессом. Многие команды предпочитают иметь непрерывные интеграционные сборки, которые готовятся после каждой регистрации в репозитории.

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

  3. CruiseControl.NET - популярное решение. Вы также можете рассмотреть возможность использования Rake.

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

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

3) Это в воздухе, зависит от бюджета, команды, между прочим.

4) Статья Джоэла, как было опубликовано ранее.

что такое ежедневная сборка в целом?

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

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

какая разница, если я создам свой собственный проект в VS?

Это происходит автоматически и с использованием конфигурации по умолчанию. Это гарантирует, что проект всегда собирается правильно, и не только в вашей системе (например, потому что у вас есть специальная конфигурация, которую вы забыли проверить в управлении версиями, или у вас установлена ​​конкретная IDE).

Как мы можем сделать это наилучшим образом для проекта.net?

Используйте CI (сервер непрерывной интеграции), например CruiseControl.NET. Есть несколько доступных.

Другие вопросы по тегам