Автоматическое развертывание .Net Web App для Azure и SQL Azure и BLOB-объектов Azure - PullRequest
11 голосов
/ 01 июля 2011

Nutshell:

Мне нужна помощь / информация / ресурсы по настройке автоматического развертывания Team Build, MsBuild, TFS 2010 для моего веб-приложения в Azure (включая все биты БД).

В идеале я бы хотел, чтобы у меня был процесс, который я мог бы запустить из пользовательского интерфейса Team Explorer VS2010 «Очередь в новой сборке», а затем просто следить за его ходом, освобождая меня для работы.на что-то еще.Варианты, чтобы вникать в журнал для любых проблем, и знать, что мой процесс является надежным, полным и полностью не ручным, то есть:

  • Резервное копирование всех моих живых данных (SQL Azure и BLOB-объекты Azure)
  • Развертывание любых изменений схемы БД (содержится в моем проекте БД)
  • Развертывание любых изменений данных в моих основных данных (например, данных конфигурации и т. Д., Которые есть в моих сценариях после развертывания)
  • Действует разумно (например, использует сжатие для пакетов развертывания, чтобы сэкономить время и пропускную способность)
  • Прикрыть мою глупую обратную сторону (например, плавно откатить неудачные изменения)
  • Обеспечивает 100% работоспособность приложения во время развертываний (не удалось или успешно) например, сеансы остались нетронутыми, минимальные шансы на потерю данных
  • Храните подробные журналы прогресса процессов на каждом этапе для исправления любых проблем
  • Сохраняйте все, что должно быть Source Controlled хорошо ...управляемый источником

Фон / Мечта / Цель:

На моей последней работе по FT у нас было довольно приятное автоматическое развертывание сetup для наших размещенных веб-приложений, использующих CC.Net (для управления процессом), CCTray и веб-интерфейс CC.NET для мониторинга и управления, генерацию кода (шаблоны CodeSmith + NetTiers для доступа к данным и объектам), MSBuild, VS Databse Projectsнесколько сценариев .bat и несколько удобных утилит, таких как PsExec и т. д., чтобы помочь с небольшими кусочками.Я не настраивал его, но у меня есть некоторый опыт управления им, решения проблем и т. Д.

Это было (98% времени) прекрасное развертывание.Вы должны убедиться, что TFS обновлен, дважды щелкните CCtray, щелкните правой кнопкой мыши проект, а затем нажмите «Принудительная сборка», откиньтесь на спинку кресла и посмотрите, что Green => Yellow => Green.

Отлично !!

Текущая ситуация:

Я запускаю своего собственного Micro ISV, и мой основной проект - приложение на Azure (в бета-версии),Мне бы очень хотелось повторить тот опыт развертывания, который у меня был до этого - Я даже рассматриваю возможность перехода с Azure на выделенные серверы - просто потому, что знаю, я могу настроитьтам есть автоматизированная система развертывания.

Моя главная остановка - биты БД, похоже на кошмар.Может быть, мне не хватает какого-то отличного бесплатного инструмента или библиотеки, которая бы выполняла эту работу, я очень на это надеюсь, но я также мог бы по-настоящему справиться с кем-то, имеющим опыт в этом, чтобы указать мне правильное направление для решения «Лучшая практика», чтобы закончить.все маленькие кусочки аккуратно.

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

Сейчас Я НЕ администратор системы , но, имея достаточно времени, я обычно могу решить, что мне нужно делать для такого рода вещей.

Однако сейчас у меня нет ЛЮБОГО времени, и успех всего моего проекта действительно зависит от того, удастся ли мне избавиться от ужасных 40 минут и более затрат на ручное развертывание, которые я сейчас испытываю.

Я хочу быть в состоянии получить некоторую обратную связь с пользователем, найти ошибку или написать улучшение, и уверенно просто запустить развертывание и приступить к чему-то другому.

Дополнительные проблемы с разработкой для Azure в ее текущем состоянии (в отличие от выделенных серверов), и в настоящее время довольно слабая инструментальная поддержка от MS (я знаю, что есть много улучшений, но мне что-то нужно прямо сейчас)- оставил меня плавать в море «Я не знаю» и «Я не уверен» и имеет тенденцию заканчиваться одним большим:

«Я сдаюсь + ручное развертывание в течение почти часа + немного рыдаю, когда моя мечта о развертывании снова умирает» (:

Но Я знаюлюди, более опытные, знающие и опытные, чем я, взломали это для себя. Я просто не могу найти информацию, я уверен, что там.

Так что, если у кого-то есть какая-то хорошаяресурсы, советы, ссылки, комментарии или мнения по этому вопросу Мне бы очень хотелось услышать.

Подробная информация о моей настройке:

Приложение запущено и работает в Azure (который находится в бета-версии - частично из-за отсутствия настройки автоматического развертывания), работая в слоте Production, я не беспокоился о промежуточном слоте, так как некоторые проблемы с поддоменами / DNS / из-за автоматически сгенерированного URL сделали этот вид болезненным /невыполнимо.

Azure / App:

Приложение

1 Веб-роль

  • ASP.NET 4
  • MVC 2
  • EF 4
  • SQL Azure
  • Хранилище BLOB-объектов Azure

1 Рабочая роль - выполняет несколько запланированных задач и работает с той же БД и хранилищем BLOB-объектов

  • SQL Azure
  • хранилище BLOB-объектов Azure

Эти две роли связываются с системой очередей Azure (или скоро это сделает)

Локально:

Датацентр 08 (DC) + Hyper V - VMдля TFS 2010 - виртуальная машина для брандмауэра Linux

Dev Box 1 (Win 7) - VS 2010 / VS 08 - SQL 08 R2 / 05

Dev Laptop 2 - как указано выше.

Я склонен запускать их все время (поэтому мне не нужно останавливаться, чтобы ждать чего-либо) с помощью FANTASTIC free tool Synergy для привязки клавиатуры, мышиБуфер обмена вместе.

Некоторые материалы, которые я читал:

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

http://deploytoazure.codeplex.com/

Как мне управлять и публиковать базу данных с моим приложением MVC2 в Azure?

Как автоматизироватьЗадача «Сгенерировать сценарии» в SQL Server Management Studio 2008?

http://www.koltovich.com/blog/DeployingAzureProjectFromTFS2010BuildServer.aspx

http://msdn.microsoft.com/en-us/library/ff803365.aspx

http://msdn.microsoft.com/en-us/library/gg432988.aspx

http://www.jimzimmerman.com/blog/2010/03/16/Deploying+An+Azure+Project+Using+TFS+2010.aspx

http://archive.msdn.microsoft.com/azurecmdlets

http://selfpacedazure.web.officelive.com/Documents/Windows%20Azure%20Platform%20Articles%20from%20the%20Trenches.pdf

http://msdn.microsoft.com/en-us/library/gg651132.aspx

http://social.technet.microsoft.com/wiki/contents/articles/overview-of-tools-to-use-with-sql-azure.aspx

http://msdn.microsoft.com/en-us/library/ms178078.aspx

http://blog.syntaxc4.net/post/2011/05/13/Continuous-Integration-in-the-Cloud.aspx

http://blog.syntaxc4.net/post/2009/12/31/Synchronizing-a-Local-Database-with-the-Cloud-using-SQL-Azure-Sync-Framework.aspx

http://social.technet.microsoft.com/wiki/contents/articles/overview-of-tools-to-use-with-sql-azure.aspx

http://social.technet.microsoft.com/wiki/contents/articles/developing-and-deploying-with-sql-azure.aspx

http://blogs.msdn.com/b/tomholl/archive/2011/02/23/using-msbuild-to-deploy-to-multiple-windows-azure-environments.aspx

http://www.scarydba.com/2011/04/25/sql-azure-deployments/

Отказ от ответственности / Blurb Minimization Blurb:

Как я и говорю Я НЕ администратор Sys, Я НЕ волшебник сценариев и не гуру CI, Япростой веб-разработчик, так что, пожалуйста, будьте любезны, если вам бездумно легко, или если я безучастно упускаю суть, я не хочу сказать, что все "Вы взяли коды?"Но я в основном потратил 6 месяцев, мечтая, что однажды скоро кто-нибудь опубликует хорошую ясную простую запись в блоге с «Руководством для идиотов», которое решит все мои проблемы, и через час я снова на небесах развертывания, но я все еще жду(или плохо гуглится), и это разбивает мне сердце маленького разработчика: (

PS Обещаю, что если я получу хороший ответ, я внесу свой вклад в фантастическое SO-сообщество и потрачу не менее 8 часов на чистку.на вопросы, которые я мог бы помочь и внести свой вклад обратно.

Ответы [ 2 ]

2 голосов
/ 23 июля 2011

Отлично.

Кажется, что новый SQL Server (с кодовым названием Denali), вместе с новыми инструментами разработчика SQL Server (с кодовым названием Джуно) и, в частности, версия 2.0 проектов DAC, вполне могли бы заполнитьразрыв между разработкой и развертыванием в SQL Azure.

Новая версия 2.0 платформы DAC расширяет набор поддерживаемых объектов до полной поддержки объектов схемы SQL Azure и типов данных для всех служб DAC: извлечение, развертывание и обновление

От SQL Azure Импорт / Экспорт

См. Также:

И, похоже, все это должно работать бок о бок с текущей настройкой,Проверьте это и обновите здесь о прогрессе.Brilliant.

1 голос
/ 03 июля 2011

Для развертываний базы данных я использую RedGate Compare, который хорошо работает с Azure. Существует версия для командной строки, которую можно использовать как часть автоматизированного процесса сборки. Что касается поддержания работоспособности сайта, вы должны развернуть его в промежуточном режиме, и тогда производственный сайт никогда не выйдет из строя. После развертывания вы можете переключить постановку на Prod.

...