Управление релизами в 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