Пошаговая автоматическая сборка / развертывание ASP.NET - PullRequest
30 голосов
/ 12 сентября 2008

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

  • Visual Studio 2008
  • Проект веб-приложения
  • CruiseControl.NET

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

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

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

Ответы [ 7 ]

15 голосов
/ 12 сентября 2008

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

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

Наше решение кратко описано в ответе на этот вопрос Автоматизировать развертывание для веб-приложений?

6 голосов
/ 12 сентября 2008

Вас может заинтересовать MSDeploy . Вот сообщение Скотта Хансельмана об этом. На данный момент он доступен только в качестве технического предварительного просмотра (сентябрь 2008 г.), но его стоит сравнить с вашими требованиями.

3 голосов
/ 23 августа 2009

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

http://nubuild.codeplex.com/

  • Простой в использовании интерфейс командной строки
  • Возможность нацеливаться на все .Net Framework версия то есть 1.1, 2.0, 3.0 и 3.5
  • Поддерживает конфигурацию на основе XML
  • Поддерживает как проект, так и файл ссылки
  • Автоматически генерирует «завершено» упорядоченный список сборки »для данного проект - без сенсорного обслуживания.
  • Способность обнаруживать и отображать круговые зависимости
  • Выполнить параллельную сборку - автоматически решает, какой из проекты в сгенерированном списке сборки может быть построен независимо.
  • Возможность обработки прокси-сборок
  • Обеспечивает визуальную подсказку для сборки например, процесс показывая «% выполнено», «Текущий статус» и т. Д.
  • Создает подробный журнал выполнения обоих в XML и текстовом формате
  • Легко интегрируется с Cruise-Control.Net непрерывный система интеграции
  • Можно использовать собственный регистратор, например, XMLLogger при таргетинге 2.0 + версия
  • Возможность разбора журналов ошибок
  • Возможность развертывания встроенных сборок на указанное пользователем местоположение
  • Возможность синхронизации исходного кода с системой контроля источника
  • Возможность управления версиями
2 голосов
/ 12 сентября 2008

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

1 голос
/ 14 июля 2013

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

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

Я выкладываю фотографии, чтобы вы тоже почувствовали это. Вот Дженкинс, который строит и получает метрики Сонар, и еще одно задание для автоматического развертывания в IIS

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

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

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

1 голос
/ 22 мая 2013

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

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

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

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

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

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

1 голос
/ 12 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...