Microsoft — мировой лидер в области ПО и ИТ-услуг
135,71
рейтинг
17 января 2014 в 11:58

Разработка → Управление релизами в Visual Studio 2013

Если вы разрабатываете сложные системы, то наверняка задумывались об автоматизации шагов, связанных с релизом. Представим, что вы создаете сложный многокомпонентный веб-сайт, инфраструктура которого разделена на несколько серверов.
Весьма заманчивым является сценарий, когда ваш процесс непрерывной интеграции и создания билдов продолжается автоматическим развертыванием этого сайта. При этом соблюдаются некоторые условия и критерии, например, требуется чтобы билд который готов к развертыванию в эксплуатационной среде проходил все тесты, и утверждался ответственными людьми из команды. Неизбежно возникает ряд моментов, которые усложняют процесс сборки, приходится создавать скрипты развертывания. Если учесть еще и процесс утверждения, то становится понятно, что такая автоматизация может быть достаточно трудоемким делом. К счастью в Team Foundation Server 2013 входит ряд инструментов, которые позволят значительно упростить управление релизами.

Кстати, 6 февраля пройдет конференция ALM Summit Russia в рамках которой мы подробно расскажем о возможностях Team Foundation Server 2013 по управлению релизами, и у читателей хабрахабра есть возможность воспользоваться скидкой 50%, для этого достаточно использовать промокод alm14_VS.

Архитектура управления релизами


Новый инструментарий который вошел в выпуск Team Foundation Server 2013 разработан компанией InCycle. Ранее этот продукт был известен как InRelease и отлично себя зарекомендовал. Общая архитектура представлена ниже:

  • Release Management Server. Серверный компонент, который, в свою очередь состоит из базы данных, контроллера процессов утверждения, и диспетчера который синхронизирует активности с целевыми серверами.
  • Release Management Client. Клиентский компонент который бывает двух типов, веб-клиент и настольный (WPF) клиент. С этими клиентами взаимодействуют тестировщики, и менеджеры вовлеченные в процессы утверждения.
  • Release Management Deployer. Компонент автоматизации развертывания которые устанавливаются на целевые серверы. Следует отметить что Release Management Server не требует никаких настроек прав доступа на клиентах так как процесс развертывания происходит на основании pull запросов осуществляющихся с клиента.

На основе этой архитектуры могут быть построены самые различные варианты развертывания, в том числе веб приложений, настольных приложений, и многокомпонентных сложных систем.

Управление шагами по развертыванию


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


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


При этом можно более детально конфигурировать целевую среду развертывания с помощью действий (Actions), например создать виртуальный сайт в IIS, создать новую виртуальную машину в Azure и многое другое:


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

Процессы утверждения релизов


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


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

Еще раз хотелось бы отметить что на конференции ALM Summit Russia будет подготовлен специальный доклад на тему управления релизами, в рамках которого будет более подробно рассказано как о возможностях этого инструментария так и его настройке. Если вы хотите посетить эту конференцию, обязательно воспользуйтесь текущей 50% скидкой на билет с помощью промокода alm14_VS. Это даст вам возможность не только получить информацию из первых рук но и пообщаться с экспертами, задать дополнительные вопросы. До встречи на конференции и побольше релизов готовых к эксплуатации!
Автор: @dmandreev
Microsoft
рейтинг 135,71
Microsoft — мировой лидер в области ПО и ИТ-услуг

Комментарии (15)

  • +1
    Слежу за этой штукой еще с тех пор, как вы купили InRelease.
    Не освещен вопрос лицензирования —
    Я правильно понимаю, что управлялка бесплатна на для тех, у кого есть лицензия на студию, а лицензируются агенты на серверах? Какова примерно цена вопроса?
    • +1
      Начиная с версий подписки Test Pro с MSDN входит лицензия на создание, обновление и удаление pipeline workflow. Для точек развёртывания нужны лицензии Visual Studio Deployment Standard и/или Visual Studio Deployment Datacenter.

      Подписчики Visual Studio Ultimate с MSDN получают одну бесплатную лицензию на Visual Studio Deployment Standard 2013

      Сейчас есть 35% скида на Test Pro и 30% скидка на Visual Studio Deployment Standard и Visual Studio Deployment Datacenter.

      См. в дополнение здесь: www.visualstudio.com/explore/release-management-vs
      И лицензирование здесь: www.visualstudio.com/ru-ru/products/how-to-buy-release-management-vs
      • 0
        Спасибо, неясен только один вопрос: на тестовые сервера нужна лицензия на агент, или они попадают под стандартные правила мсдн?
        • 0
          Вот полный лицензионный гайд, правда пока на английском языке: www.microsoft.com/en-us/download/details.aspx?id=13350

          Каждый узел, на который производится развёртывание, в рамках Release Management требует лицензии на VS Deployment:

          Note that a node or endpoint at any stage (including all pre-production stages) requires a Visual Studio Deployment license.
  • +1
    Это, я так понимаю, аналог Puppet/Chef + Capistrano, встроенный в Visual Studio?
  • 0
    Скажите а построение процесса развертывания(я про deployment sequence) случайно не завязано на жертве аборта WWF?
  • 0
    Коллеги, а с кем можно пообщаться по поводу решения проблем при установке?

    У меня Microsoft Deployment Agent не может подключиться к Release Management Server. Первый на сервере из живой площадки, не в домене, а второй в офисе, в домене.

    Вся диагностическая информация от агента:

    V, 2014/01/23, 01:22:49.324, Created Nt account for user Administrator
    V, 2014/01/23, 01:22:49.324, Found Sid S-1-5-21-3719844311-4177430663-3684011079-500 for user Administrator
    V, 2014/01/23, 01:22:49.324, Is Administrator network service account? False 
    V, 2014/01/23, 01:22:49.324, Created Nt account for user Administrator
    V, 2014/01/23, 01:22:49.324, Found Sid S-1-5-21-3719844311-4177430663-3684011079-500 for user Administrator
    V, 2014/01/23, 01:22:49.324, Is Administrator local system account? False 
    V, 2014/01/23, 01:22:49.324, Domain: 
    V, 2014/01/23, 01:22:49.324, Final UserName: SRV-1-1\Administrator.
    V, 2014/01/23, 01:22:49.324, Loading account details for SRV-1-1\Administrator
    V, 2014/01/23, 01:22:49.324, Is SRV-1-1\Administrator local machine account? True 
    I, 2014/01/23, 01:22:49.324, Normalized account is SRV-1-1\Administrator and Sid is S-1-5-21-3719844311-4177430663-3684011079-500
    I, 2014/01/23, 01:22:49.340, Validating account to use as identity for Release Management Services...
    I, 2014/01/23, 01:22:49.340, IsAdminAccount : Trying to determine if the account : SRV-1-1\Administrator is an admin on the local machine
    I, 2014/01/23, 01:22:49.355, IsAdminAccount : Trying to determine if the account : SRV-1-1\Administrator is an admin on the local machine
    I, 2014/01/23, 01:22:49.355, User SRV-1-1\Administrator is system, Admin 
    I, 2014/01/23, 01:22:49.355, Validated account to use as identity for Release Management Services.
    I, 2014/01/23, 01:22:49.355, Validating Release Management Server for Team Foundation Server 2013...
    E, 2014/01/23, 01:22:49.527, Received Exception : Microsoft.TeamFoundation.Release.CommonConfiguration.ConfigurationException: Failed to validate Release Management Server for Team Foundation Server 2013.
       at Microsoft.TeamFoundation.Release.CommonConfiguration.DeployerConfigurationManager.ValidateServerUrl()
       at Microsoft.TeamFoundation.Release.CommonConfiguration.DeployerConfigurationManager.ValidateAndConfigure(DeployerConfigUpdatePack updatePack, DelegateStatusUpdate statusListener)
       at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
    I, 2014/01/23, 01:22:49.527, Work completed for GetConfiguration() call : got out of turn error
    E, 2014/01/23, 01:22:49.527, Failed to validate Release Management Server for Team Foundation Server 2013.
    
    • 0
      эту проблему решил, добавив пользователя с именем SRV-1-1\Administrator в список пользователя в настройках Release Management.

      теперь другая проблема: Deploy Agent не хочет подключаться к Server. причем установка Агента прошла успешно, видимо он сумел обратиться к Серверу в процессе этого.
      Но на Клиенте функция Scan не работает, и добавление вручную Агента по IP тоже не приводит к его обнаружению (= статус Offline).

      может потому, что я добавляю не доменным именем, а по IP? агент стоит на сервере, который не в домене. это вообще поддерживается?
      • 0
        Поддерживается. Этого точно нет в требованиях.

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

        www.microsoft.com/ru-ru/download/details.aspx?id=41648
        • 0
          Еще вопрос, если можно.

          У меня конфигурация, когда девелоперская среда (тфс и все все все) — это физически одна сеть, а продакшн — другая. соответственно, разные домены.

          Есть машина шлюз, которая физически находится в обоих сетях.

          Хочу деполоить из одной сетки в другую, поддерживает ли такую конфигурацию RM?
          При определении нового сервера я вижу возможность его определить как Gateway, и передавать билды через https, но нигде (документация, мсдн, гугль) не вижу описания как это должно работать и настраиваться.
  • 0
    А эта штука работает в VS Online?
    • 0
      Уточните, что вы имеете ввиду поточнее, а то вопрос не понятен.
      • 0
        Работает ли управление релизами на www.visualstudio.com/ru-ru/?
        В статье писали, что это актуально для стэндалон TFS 2013, а в TFS Online это есть?
        • 0
          Чтобы было понятно, решение состоит из 3-х частей:
          1) Клиент для управления и настройки пайплайна
          2) Надстройка для TFS
          3) Клиент для развёртывания

          VSO — это TFS в облаке, соответственно, речь предположительно идёт о том, интегрирована ли эта TFS надстройка в VSO. Этой интеграции сейчас нет, но планируется добавление поддержки
          blogs.msdn.com/b/visualstudioalm/archive/2013/12/19/how-to-configure-team-foundation-server-with-release-management.aspx

          Если же речь идёт об использовании VSO, как билд-сервера, с выклдадыванием результатов в определённое место — потенциально можно интегрировать в пайплайн.

          • 0
            VSO — это TFS в облаке, соответственно, речь предположительно идёт о том, интегрирована ли эта TFS надстройка в VSO. Этой интеграции сейчас нет, но планируется добавление поддержки

            Вот это интересовало. Спасибо!

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

Самое читаемое Разработка