Подтвердить что ты не робот

Поэтапный ASP.NET Автоматизированная сборка/развертывание

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

http://nubuild.codeplex.com/

  • Простой в использовании интерфейс командной строки
  • Возможность настроить таргетинг на все .Net framework версия i.e. 1.1, 2.0, 3.0 и 3.5
  • Поддержка конфигурации на основе XML
  • Поддерживает как проект, так и файл ссылки
  • Автоматически генерирует "полный" упорядоченный список сборки "для данного проект - нет обслуживания прикосновением.
  • Возможность обнаружения и отображения круговые зависимости
  • Выполнять параллельную сборку - автоматически определяет, какая из проектов в сгенерированном списке сборки могут быть построены независимо.
  • Возможность работы с прокси-сборками
  • Предоставляет визуальный ключ к сборке процесс, например. показывая "% завершено", "текущее состояние" и т.д.
  • Генерирует подробный журнал выполнения как в формате XML и текстовом формате
  • Легко интегрируется с Круиз-контроль система интеграции
  • Может использовать пользовательский журнал, например XMLLogger при настройке версии 2.0 +
  • Возможность анализа журналов ошибок
  • Возможность развертывания встроенных сборок для указанное пользователем местоположение
  • Возможность синхронизации исходного кода с системой контроля источника
  • Возможность управления версиями

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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

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

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

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

Ответ 7

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

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

i post som pictures для u тоже чувствую это. Вот Jenkins witch builds и получает показатели Sonar и другое задание для автоматического развертывания в IIS

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

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

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