2008-09-11 3 views
30

Похоже, существует так много разных способов автоматизации сборки/развертывания, что становится трудно разобрать все различные сценарии, которые люди поддерживают в учебных пособиях в Интернете. Поэтому я хотел бы представить этот вопрос на StackOverflow толпы ... что было бы лучшим способом создать автоматизированную сборки и развертывания системы с помощью следующей конфигурации:Поэтапный ASP.NET Автоматизированная сборка/развертывание

  • Visual Studio 2008
  • Web Application Project
  • CruiseControl.NET

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

Также особый интерес представляет то, как мы поддерживали бы несколько сред, поскольку у нас есть dev, qa, uat, а затем, конечно, prod.

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

ответ

15

Недавно я потратил несколько дней на автоматизацию развертывания в своей компании.

Мы используем комбинацию CruiseControl, NAnt, MSBuild для создания версии версии приложения. Затем отдельный скрипт использует MSDeploy и XCopy для резервного копирования сайта в реальном времени и переноса новых файлов.

Наше решение кратко описано в ответе на этот вопрос Automate Deployment for Web Applications?

6

Возможно, вас заинтересует MSDeploy. Here's пост Скотта Гензеля на этом. Он доступен только как технический предварительный просмотр на данный момент (сентябрь 2008 г.), но стоит оценить ваши требования.

+0

Хм, хотя это кажется очень крутым ... это, похоже, не помогает сценарию автоматической сборки (если я не читаю документы неправильно). – 2008-09-12 15:15:22

1

У меня был related question о получении развернутого набора файлов из автоматической сборки. Я обнаружил, что проекты веб-развертывания (ссылки и все в старом вопросе) сделали то, что мне было нужно - это дополнение VS и MSBuild.

2

У вас есть возможность запускать команды удаленно? Утилита PsExec от Systinternals позволила запустить программу распаковки командной строки на удаленной машине. Если у вас есть сценарий, который копирует сборку как .zip-файл на удаленный сайт, вам просто понадобится еще одна строка для вызова PsExec для распаковки файлов.

3

Существует еще один новый инструмент для сборки (очень умный обертка) называется NUBuild. Его легкий, открытый источник и чрезвычайно прост в настройке и обеспечивает почти бесконтактное обслуживание. Мне очень нравится этот новый инструмент, и мы сделали его стандартным инструментом для нашего непрерывного процесса сборки и интеграции наших проектов (у нас есть около 400 проектов из 75 разработчиков). Попробуйте.

http://nubuild.codeplex.com/

  • Простой в использовании интерфейс командной строки
  • Возможность предназначаться все .Net Framework версии т.е. 1,1, 2,0, 3,0 и 3,5
  • Поддержка XML на основе конфигурации
  • Поддерживает проект и файл ссылки
  • Автоматически генерирует «полный комплект » ed build list "для данного проекта - Нет обслуживания прикосновением.
  • Способность обнаруживать и отображать циклических зависимостей
  • Выполните параллельную сборку - автоматически определяет, какие из проектов в сформированном списке сборки можно построить самостоятельно.
  • Возможность обработки прокси-сборок
  • Предоставляет визуальную подсказку для построения процесса, например. показывая «% завершено», «текущее состояние» и т.д.
  • Формирует подробное выполнение входа и в XML и текстовом формате
  • Легко интегрируется с Cruise-Control.Net непрерывной системы интеграции
  • Можно использовать пользовательский регистратор как XMLLogger при ориентации 2.0 + версии
  • Возможность анализировать журналы регистрации ошибок
  • Возможность развертывания встроенных сборок в пользователя указанное место
  • Возможность синхронизации исходного кода с системой источника управления
  • возможностей управления Версия
1

Это общая проблема (и я хочу, я прочитал его раньше) для всего развития, а не только ASP.NET. Будучи одним из его разработчиков, моя команда, естественно, использует BuildMaster внутренне для всего процесса выпуска, и для большинства сценариев это бесплатно. Внутри инструмента мы можем выполнить все стандартные сборки CI для создания артефактов, а затем настроить процесс автоматизации для развертывания этих артефактов на любом из 40 + серверов, которые мы размещаем внутри или снаружи, в зависимости от конкретного приложения или среды ,

Поскольку вы упомянули о развертывании в разных средах тестирования, это фундаментальный аспект инструмента. Идея состоит в том, чтобы моделировать рабочий процесс среды (например, Integration -> QA -> Production), который у вас уже есть, и по существу продвигать сборку от источника до производства. В большинстве случаев это так же просто, как добавление действия развертывания, которое развертывает артефакт в среде, в других случаях это может быть намного сложнее.

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

Одна вещь, о которой вы не упомянули в отношении этого процесса, - это аспект развертывания базы данных. Для большинства приложений ASP.NET требуется связанная база данных, иначе они могут быть просто статическими HTML-файлами. Крайне важно, чтобы схема базы данных обновлялась до соответствующей версии базы данных при каждом развертывании. Существует, что не удивительно, модуль в BuildMaster, который обрабатывает это и для вас. Идея состоит в том, чтобы хранить сценарии DDL-DML в самом инструменте и, выполняя скрипты только один раз для каждой среды, это гарантирует, что все ваши базы данных в каждой среде будут обновлены по мере развертывания ваших построений через них. Другие сценарии (например, хранимые процедуры, представления, триггеры и т. Д.) Являются, по существу, кодовыми файлами и поэтому принадлежат к источнику управления. Эти сценарии типа DROP-CREATE-CONFIGURE могут запускаться каждый раз в большинстве случаев с помощью простого действия развертывания.

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

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

1

Я вижу, что многие люди используют CC для своих проектов .NET, но почему бы не использовать Jenkins, Sonarqube? Они получили все, что вам нужно. Я настраиваю все это через 3 дня. У меня есть сервер Win 2008 R2, MSSQL, Jenkins, VIsual SVN и Sonarqube.

Все это прекрасно работает, и у вас есть все показатели для вашего проекта. Sonarqube использует Gallio, жандарм, FXcop, Stylecop, NDepths и PartCover, чтобы получить ваши показатели, и все это довольно прямолинейно, так как SonarQube делает это автоматически без большой настройки.

i post som фотографии для u тоже получают ощущение этого. Вот Дженкинс ведьма строит и получить показатели сонара и другую работу для развертывания автоматически IIS

И Sonarqube, все метрики для моего проекта. Это простое приложение MVC4, но он прекрасно работает !:

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

Вся эта установка использует MSBuild, также создает и развертывает приложения.

Смежные вопросы