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

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

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
30
0
26 550
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

Joel Martinez 12.09.2008 19:15

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

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

Ответ принят как подходящий

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

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

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

Есть еще один новый инструмент сборки (очень умная оболочка) под названием 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+
  • Возможность разбирать журналы ошибок
  • Возможность развертывания собранных сборок в указанное пользователем местоположение
  • Возможность синхронизировать исходный код с системой управления версиями
  • Возможность управления версиями

Это обычная проблема (и я хотел бы прочитать ее раньше) для всех разработчиков, а не только для ASP.NET. Моя команда, как один из его разработчиков, естественно, использует BuildMaster для внутреннего использования для всего процесса выпуска, и для большинства сценариев это бесплатно. В этом инструменте мы можем выполнять все стандартные сборки 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 делает это автоматически без особой настройки.

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

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

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

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

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