Пошаговая автоматическая сборка/развертывание ASP.NET

StackOverflow https://stackoverflow.com/questions/57762

  •  09-06-2019
  •  | 
  •  

Вопрос

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

  • Визуальная Студия 2008
  • Проект веб-приложения
  • КруизКонтроль.NET

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

http://nubuild.codeplex.com/

  • Простой в использовании интерфейс командной строки
  • Возможность нацеливаться на всю версию .NET Framework IE1.1, 2.0, 3.0 и 3.5
  • Поддерживает конфигурацию на основе XML
  • Поддерживает ссылки на проект и файлы
  • Автоматически генерирует «полный список заказанного строительства» для данного проекта - без технического обслуживания.
  • Возможность обнаружения и отображения круговых зависимостей
  • Выполните параллельную сборку - автоматически решает, какие из проектов в списке сгенерированных сборки могут быть построены независимо.
  • Возможность обработки прокси-сборок
  • Обеспечивает визуальный подсказку к процессу сборки, напримерПоказывая «% завершено», «текущее состояние» и т. Д.
  • Генерирует подробный журнал выполнения как в XML, так и в формате текста
  • Легко интегрируется с Cruise-Control.net System непрерывной интеграции
  • Может использовать пользовательский журнал, как Xmllogger, когда нацеливание 2.0 + версия
  • Умение анализировать журналы ошибок
  • Возможность развертывания встроенных сборок в указанное пользовательское местоположение
  • Возможность синхронизировать исходный код с системой контроля источника
  • Возможность управления версиями

Есть ли у вас возможность запускать команды удаленно?А ПсExec полезность от Систинтерналы позволит запустить программу распаковки из командной строки на удаленном компьютере.Если у вас есть сценарий, который копирует сборку в виде файла .zip на удаленный сайт, вам понадобится всего лишь еще одна строка для вызова PsExec для разархивирования файлов.

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top