Как сделать ежедневную сборку проекта .net из А - Я? - PullRequest
8 голосов
/ 08 ноября 2010

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

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

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

Спасибо

Ответы [ 8 ]

5 голосов
/ 08 ноября 2010

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

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

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

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

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

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

3 голосов
/ 08 ноября 2010

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

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

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

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

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

3 голосов
/ 08 ноября 2010

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

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

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

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

3 голосов
/ 08 ноября 2010

Артикул от Джоэла. Хорошо читать.

2 голосов
/ 08 ноября 2010
  1. Ежедневные сборки предназначены для того, чтобы по крайней мере раз в день ваше приложение находилось в состоянии сборки. Они обычно управляются автоматизированным процессом. Многие команды предпочитают иметь непрерывные интеграционные сборки, которые готовятся после каждой регистрации в репозитории.

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

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

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

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

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

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

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

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

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

1 голос
/ 08 ноября 2010

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

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

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

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

...