Поделиться через


Настройка рабочего процесса Lab Management

Для автоматизации сборки приложения, развертывания новой сборки в лабораторную среду и выполнения тестов с новой сборкой можно использовать шаблон лаборатории по умолчанию (LabDefaultTemplate). Сведения об использовании шаблона лаборатории по умолчанию см. в разделе Создание рабочего процесса сборки, развертывания и тестирования для среды SCVMM и Создание рабочего процесса сборки, развертывания и тестирования для стандартной среды. Однако все процессы сборки, развертывания и тестирования могут слегка отличаться друг от друга из-за разных требований. Например, для одного рабочего процесса может потребоваться копирование двоичных файлов теста из расположения обычного построения, тогда как для другого процесса необходимо копирование двоичных файлов теста из временного расположения. Для одного рабочего процесса может потребоваться сохранение лабораторной среды в библиотеке SCVMM, чтобы тестировщики могли разворачивать ее, а для другого процесса сохранение среды не требуется. Поскольку шаблон лаборатории по умолчанию основан на рабочем процессе Windows версии 4.0, он является полностью расширяемым и настраиваемым, то есть LabDefaultTemplate можно настраивать в соответствии с конкретными требованиями. В этом разделе описаны общие шаги по настройке шаблона лаборатории по умолчанию.

Требования

  • Visual Studio Ultimate, Visual Studio Premium, Visual Studio Test Professional

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

  • Specify the location of test binaries other than the build location.

  • Support application deployments that require a restart after installation.

  • Read source control files.

  • Access a build drop location using the build agent account.

  • Access other locations using the lab service account.

Основные понятия настройки рабочего процесса

Для настройки рабочего процесса необходимо знать три ключевых понятия.

  • Шаблон. Шаблон определяет последовательность действий или шагов, входящих в рабочий процесс. Шаблон основан на Windows Workflow Foundation 4.0 и хранится в виде XAML-файла в системе управления версиями. Чтобы загрузить шаблон в редактор рабочих процессов, дважды щелкните XAML-файл. В редакторе будут показаны различные действия и последствия, характерные для рабочего процесса. Для программирования шаблона можно использовать переменные с различными областями действия, условную логику, циклы и так далее — аналогично любому другому языку программирования. Windows Workflow Foundation позволяет настраивать шаблон лаборатории по умолчанию в зависимости от конкретных потребностей.

  • Действия. Действие представляет собой стандартный блок рабочего процесса, и шаблон лаборатории по умолчанию использует множество действий. Дополнительные действия указаны на панели инструментов под заголовком Действия Team Foundation Lab Management. Чтобы использовать действие в рабочем процессе, перетащите его с панели инструментов в редактор рабочих процессов Visual Studio, в соответствующее расположение в шаблоне. Входные и выходные параметры можно определить, если просмотреть свойства действия. Дополнительные сведения о каждом действии Lab Management см. в разделе Действия рабочего процесса Lab Management. Если входящих в продукт действий недостаточно для удовлетворения требований, можно добавить новые действия.

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

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

Перед началом настройки

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

Расположение папки для шаблонов рабочих процессов по умолчанию

Подготовка к настройке

  1. В Team Explorer дважды щелкните узел Система управления версиями для командного проекта.

  2. В обозревателе управления исходным кодом разверните дерево системы управления версиями и найдите папку $/<Project_Name>/BuildProcessTemplates.

  3. Сопоставьте эту папку с локальной папкой (например, C:\Sources).

  4. Щелкните правой кнопкой мыши файл LabDefaultTemplate.11.xaml и выберите команду Получить последнюю версию.

  5. Сделайте копию файла LabDefaultTemplate.11.xaml и присвойте ему новое имя, например LabDefaultTemplate_customize.11.xaml.

  6. Добавьте этот новый файл в систему управления версиями.

  7. Дважды щелкните этот новый файл. Файл откроется в редакторе рабочих процессов Visual Studio.

После этого можно изменить созданную копию шаблона лаборатории по умолчанию.

Указание расположения двоичных файлов теста, отличного от расположения сброса построения

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

Перетаскивание действия LabManagement с панели элементов

Определение входного аргумента рабочего процесса для указания пути к двоичным файлам теста

Определение входного аргумента

  1. Перейдите на вкладку Аргументы в нижней части окна редактора рабочих процессов.

  2. Выберите команду Создать аргумент. Введите в текстовое поле имя аргумента, например TestBinariesLocation. В раскрывающемся списке Направление выберите пункт Увеличение. В раскрывающемся списке Тип аргумента выберите пункт String.

Передача значения аргумента действию ExecuteRemoteTestRun

Это действие выполняет удаленный тестовый запуск, ждет его окончания и обновляет сведения о построении в соответствии со статистикой тестового запуска.

Передача значения аргумента

  1. В редакторе рабочих процессов перейдите к действию Запущенные тесты. Несмотря на то что отображаемое имя этого действия "Запущенные тесты", тип действия — ExecuteRemoteTestRun.

  2. Щелкните правой кнопкой мыши действие и выберите пункт Свойства. Откроется окно Свойства в правом нижнем углу, в котором будут показаны входные и выходные аргументы этого действия. Одним из входных аргументов этого действия является TestDirectory, который задает путь расположения двоичных файлов теста.

  3. В окне Свойства выберите TestDirectory. В конце строки нажмите кнопку с многоточием (...).

  4. В области Редактор выражений введите TestBinariesLocation и нажмите кнопку ОК.

  5. В меню Файл выберите пункт Сохранить LabDefaultTemplate_customize.11.xaml.

  6. В строке меню обозревателя управления исходным кодом выберите значок Вернуть.

Теперь для создания новых определений построения можно использовать настроенный XAML-файл. Новый входной аргумент TestBinariesLocation появится в разделе Прочее на вкладке Процесс в определении построения, где можно задать значение.

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

Шаблон лаборатории по умолчанию не перезапускает лабораторную среду после развертывания приложения. Возможно, потребуется настроить шаблон, чтобы он поддерживал приложения, для которых может требоваться перезагрузка после развертывания. Если приложение было развернуто в лабораторной среде вручную, потребуется перезагрузка только машины, на которую было установлено приложение. Visual Studio Lab Management не поддерживает операции на виртуальных машинах в среде. Поэтому для перезагрузки одной машины необходимо перезапустить все машины в лабораторной среде.

Предупреждение

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

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

  1. Остановка среды

  2. Запуск среды

  3. Ожидание запуска виртуальных машин перед продолжением остальной части рабочего процесса.

Остановка среды

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

Остановка среды

  1. В редакторе рабочих процессов перейдите к действию с отображаемым именем Успешное развертывание приложения.

  2. В меню Вид выберите пункт Панель элементов. После этого в левой части откроется панель инструментов и будет показан список Действия Team Foundation Build. Найдите в списке Действия Team Foundation Lab Management.

  3. На панели инструментов выберите действие StopLabEnvironment. Перетащите его в редактор рабочих процессов и разместите перед действием Успешное развертывание приложения.

  4. Щелкните правой кнопкой мыши действие и выберите пункт Свойства. В окне свойства будут показаны входные и выходные аргументы этого действия. Обратите внимание, что рабочий процесс имеет переменную с именем LabEnvironmentUri, которая относится к URI среды.

  5. Откройте вкладку Переменные. Отобразится список переменных.

  6. В строке LabEnvironmentUri, под столбцом По умолчанию дважды щелкните Введите выражение VB. В текстовом поле введите LabEnvironmentUri. Редактор покажет все существующие варианты использования параметра, и вместо ввода значения его можно выбрать в списке.

Запуск среды

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

Запуск среды

  1. На панели инструментов выберите действие StartLabEnvironment. Перетащите его в редактор рабочих процессов и разместите перед действием Успешное развертывание приложения, но после действия StopLabEnvironment.

  2. Щелкните правой кнопкой мыши действие и выберите пункт Свойства. В окне свойства будут показаны входные и выходные аргументы этого действия. Снова обратите внимание, что рабочий процесс имеет переменную с именем LabEnvironmentUri, которая относится к URI среды.

    Откройте вкладку Переменные. Отобразится список переменных.

    В строке LabEnvironmentUri, под столбцом По умолчанию дважды щелкните Введите выражение VB. В текстовом поле введите LabEnvironmentUri. Редактор покажет все существующие варианты использования параметра, и вместо ввода значения его можно выбрать в списке.

Ожидание перезапуска виртуальных машин перед продолжением остальной части рабочего процесса

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

Ожидание запуска виртуальных машин

  1. На панели инструментов перейдите на вкладку Примитивы.

  2. Щелкните действие Задержка. Перетащите его в редактор рабочих процессов и разместите перед действием Успешное развертывание приложения, но после действия StartLabEnvironment.

  3. Щелкните правой кнопкой мыши действие и выберите пункт Свойства. В окне свойства будут показаны входные и выходные аргументы этого действия. Обратите внимание, что рабочий процесс имеет переменную с именем Duration, которая относится к времени ожидания.

  4. В окне Свойства выберите пункт Длительность и нажмите кнопку с многоточием (…).

  5. В редакторе выражений введите время ожидания (например, 10 минут) в формате TimeSpan.FromMinutes(10).

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

Настройка чтения файлов системы управления версиями

При создании настраиваемых действий и последующем их использовании в шаблоне рабочего процесса убедитесь, что агент сборки, осуществляющий связь с помощью учетной записи службы лаборатории, имеет доступ к этим действиям. Поскольку эти действия необходимо вернуть в систему управления версиями в качестве настраиваемых сборок, убедитесь, что учетная запись службы лаборатории имеет разрешение на чтение пути, по которому возвращаются настраиваемые сборки. Дополнительные сведения об учетной записи службы лаборатории см. в разделе Практическое руководство. Настройка учетной записи службы лаборатории. Разрешения для учетной записи службы можно предоставить с помощью команды tf permissions. Например, чтобы предоставить разрешение на чтение для учетной записи службы лаборатории mydomain\labAccount, расположенной в $/MyProject/CustomAssemblies, необходимо выполнить команду, аналогичную C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE>tf permission /user:mydomain\labAccount /collection:http://aseemb-tfs11:8080/tfs/Collection0 /allow:read $/MyProject/CustomAssemblies

Настройка доступа к расположению сброса построения с помощью учетной записи агента построения

Агент сборки, выполняющий рабочий процесс, получает доступ к заданному месту сборки с помощью учетной записи службы лаборатории. Если необходимо, чтобы агент сборки использовал учетную запись агента сборки, можно настроить шаблон лаборатории по умолчанию. В шаблоне найдите действие RunDeploymentScript, выполняющее скрипты развертывания. Это действие предоставляет доступ к свойству SharedLocationForNetUse, определяющему расположение, к которому необходим доступ с помощью учетной записи службы лаборатории. <mtlwa:RunDeploymentScript DisplayName="Running Deployment Script" ScriptDetails="[scriptDetails]" ThrowOnError="True" SharedLocationForNetUse="[BuildLocation]" />Чтобы получить доступ к расположению сброса под учетной записью агента построения вместо учетной записи службы лаборатории, удалите свойство из шаблона или задайте значение этого свойства как NULL ({x:Null}), как показано в следующем примере: mtlwa:RunDeploymentScript DisplayName="Running Deployment Script" ScriptDetails="[scriptDetails]" ThrowOnError="True" SharedLocationForNetUse="{x:Null}" />

Настройка доступа к другим расположениям с помощью учетной записи службы лаборатории

Если агент построения, который выполняется под учетной записью службы лаборатории, должен считывать расположения, отличные от расположения сброса построений, можно изменить значение свойства SharedLocationForNetUse со значения по умолчанию [BuildLocation] на необходимое расположение. Например, для агента построения, который выполняется под учетной записью службы и которому требуется доступ к каталогу \\contoso\scripts, код должен выглядеть следующим образом: <mtlwa:RunDeploymentScript DisplayName="Running Deployment Script" ScriptDetails="[scriptDetails]" ThrowOnError="True" SharedLocationForNetUse="\\contoso\scripts" />

См. также

Задачи

Создание или изменение определения сборки

Основные понятия

Действия рабочего процесса Lab Management

Использование лабораторной среды в жизненном цикле приложения

Определение процесса сборки

Другие ресурсы

A Developer's Introduction to Windows Workflow Foundation (WF) in .NET 4 (Windows Workflow Foundation (WF) в .NET 4. Введение для разработчиков)