Автоматизация развертывания .NET Web App для Azure & SQL Azure & Azure Blobs

Краткая справка:

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

В идеале я хотел бы иметь процесс, который я могу запустить из VS2010 Team Explorer UI "Queue New Build", а затем просто следить за его прогрессом, освобождая меня от работы над чем-то другим. Варианты, чтобы вникать в ведение журнала для любых проблем и знать, что мой процесс является надежным, полным и полностью не-ручным, т.е.

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

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

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

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

Отлично!

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

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

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

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

Теперь у меня нет Sys Admin, но с достаточным временем я могу вообще разобраться, что мне нужно делать для такого рода вещей.

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

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

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

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

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

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

Информация о моей настройке:

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

Azure/App:

Приложение

1 Веб-роль

  • ASP.NET 4
  • MVC 2
  • EF 4
  • SQL Azure
  • Хранилище Azure Blob

1 "Роль рабочего" - это выполнение некоторых запланированных задач и работает с тем же БД и хранилищем Blob

  • SQL Azure
  • Хранилище Azure Blob

2 роли взаимодействуют с системой очереди Azure (или будут делать в ближайшее время)

Локально:

Datacenter 08 (DC) + Hyper V  - VM для TFS 2010  - VM для брандмауэра Linux

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

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

Я стараюсь работать вместе все время (так что мне никогда не нужно останавливаться ждать чего-либо) с помощью бесплатного инструмента FANTASTIC 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/

Отказ от ответственности/Запрет на нарушение правил форума Blimb:

Как я и говорю, я НЕТ Sys Admin, я НЕТ script маг, и НЕТ CI гуру, я простой мыслящий веб-разработчик, поэтому PLS PLS будет приятным, если его бездумно легко для вас, или если я stoopidly am пропуская точку, я не хочу быть всем "У вас есть коды?" Но Ive в основном потратил 6 месяцев, мечтая, что в один прекрасный день кто-то скоро опубликует хорошую четкую запись в блоге с "Руководством для идиотов", который решает все мои беды, а через час я снова окажусь в разведении, но я все еще жду (или Googling плохо), и его ломает мое маленькое сердце разработчиков: (

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

Ответ 1

Великий.

Кажется, новый SQL Server (Code Named Denali), наряду с новыми инструментами разработчика SQL Server (Code Named Juneau) и, в частности, выпуском проектов ЦАП 2.0, вполне может заполнить пробел между разработкой и развертыванием в SQL Azure,

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

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

Также смотрите:

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

Ответ 2

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