Каков хороший процесс автоматизации сборки и развертывания для использования с asp.net?

Мне нужны рекомендации по автоматическому построению и развертыванию проекта.

Наша текущая установка для разработки использует ASP.NET, SVN, CCNET и сценарий MSBuild для сборки сервера разработки. Я думал о переходе на Cruise вместо CCNET, хотя не уверен, что это дает мне что-то дополнительное, чего у меня еще нет.

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

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


person Brian Surowiec    schedule 19.02.2010    source источник
comment
Просто обновление через 6 лет; Инструменты для автоматизации выпуска приложений специально разработаны для этого. BuildMaster - один из имеющихся инструментов и это руководство описывает упомянутый процесс.   -  person Karl Harnagy    schedule 19.07.2016


Ответы (3)


Для небольших или личных проектов я бы порекомендовал использовать что-то вроде бесплатного (и отличного) TeamCity компании JetBrains. Автоматизация модульного тестирования, непрерывная интеграция и правила того, что происходит после сборки (включая перемещение ее в другое место).

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

Обновление 31.07.2014:

Я использовал настраиваемые шаблоны сборки TFS успешно. Они немного сложны, но с ними можно сделать довольно много интересных вещей.

Я не думаю, что для проектов с открытым исходным кодом (таких как библиотеки NuGet), размещенных на GitHub, вы можете превзойти AppVeyor. У меня есть несколько проектов, таких как Mailchimp.NET, которые имеют полную сборку и автоматизацию развертывания NuGet.

person Dan Esparza    schedule 02.03.2010
comment
Я, наконец, перешел с CruiseControl.NET на TeamCity, и мне это нравится. Это было намного проще использовать даже с пользовательскими скриптами MSBuild. - person Brian Surowiec; 05.04.2011

Похоже, две основные функции для развертывания изменений кода: 1. Копирование файлов и 2. Выполнение изменений сценария БД. Если вы посмотрите на использование задач сообщества MsBuild, вы найдете множество удобных задач сборки, которые могут помочь вам на этом пути. Похоже, что SqlExecute и RoboCopy - это все, что вам нужно использовать. Это потребует от вас изменения файлов проекта, чтобы расширить их поведение при сборке, но как только это будет сделано, вы сможете «записать» ручную часть того, что делается.

person Achilles    schedule 02.03.2010

Раньше я использовал Nant, и мне очень повезло для подобных задач. Вы можете начать это с помощью своей автоматизированной сборки. (http://nant.sourceforge.net/)

Если вам нужно что-то более подробное, попробуйте wix (http://wix.sourceforge.net/)

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

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

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

person Development 4.0    schedule 19.02.2010
comment
Сейчас у нас есть 2 типа сборки. Один - это сборка для разработчиков, а другой - выпуск. Сборки Dev запускаются каждые xx минут после проверки кода, запуска модульных тестов и т. SVN. - person Brian Surowiec; 20.02.2010