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


Создание скриптов развертывания рабочих процессов сборки, развертывания и тестирования

Чтобы развернуть приложение с использованием рабочего процесса "сборка-развертывание-тестирование", необходимо создать скрипты развертывания и добавить их в сборку. Скрипты развертывания — это BAT- или CMD-файлы, которые копируют сборку на компьютеры в лабораторной среде. Если сборка включает пакет установки, можно использовать скрипты развертывания для запуска пакета установки. При создании рабочего процесса "сборка-развертывание-тестирование" в рабочий процесс добавляются команды, выполняющие скрипты развертывания. При выполнении рабочего процесса контроллер сборки выполняет эти команды в рабочем каталоге на указанных компьютерах в лабораторной среде.

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

  • Подготовка файлов сборки к развертыванию

  • Создание скриптов развертывания

  • Сборка скриптов развертывания

  • Настройка рабочих каталогов

  • Добавление скриптов развертывания в рабочий процесс

Дополнительные примеры см. Автоматизация системных тестов

Требования

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

Подготовка файлов сборки к развертыванию

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

Важно!

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

Тип установки

Описание

Пакет развертывания веб-службы

Предупреждающее замечаниеВнимание

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

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

Файлы сборки без пакета установки

Скрипты развертывания должны скопировать файлы приложения и сборки на конечные компьютеры в лабораторной среде.

Пакет установки

Предупреждающее замечаниеВнимание

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

Скрипты развертывания должны скопировать пакет установки на конечные компьютеры в лабораторной среде, а затем выполнить пакет установки. Скрипты развертывания должны выполнять пакет установки в автоматическом режиме. Данные, которые вводятся пользователем при установке, должны предоставляться скриптами развертывания. Сюда входят учетные данные. Если скрипты развертывания не обрабатывают данные, вводимые пользователями при установке, развертывание приложения завершится ошибкой. Если вы развертываете не веб-приложение, и вам требуется пакет установки для развертывания, рекомендуется использовать пакет установки InstallShield. Сведения об InstallShield см. в разделе Windows Installer Deployment.

Создание скриптов развертывания

Ниже перечислены наиболее распространенные задачи, выполняемые скриптами развертывания.

  • Получение пути сборки в контроллере сборки. Можно отправить эти данные в скрипт развертывания в качестве аргумента команды.

  • Укажите путь развертывания.

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

  • Скопируйте пакет развертывания из пути сборки в путь развертывания.

  • Выполните пакет развертывания в папке развертывания.

Следующие команды соответствуют некоторым задачам, которые часто выполняются скриптами развертывания.

REM set build path
set buildlocation=%1

REM set deployment path
set targetdir="C:\deploy"

REM create deployment directory
if not exist %targetdir% (cmd /c mkdir %targetdir%)

REM copy build to the deployment directory
xcopy /c /y /e %buildlocation%\*.* %targetdir%

REM if you are using a deployment package you can run it here, after you copy it to your deployment directory

Сборка скриптов развертывания

После создания скриптов развертывания необходимо вернуть их в систему управления версиями, а затем настроить их, чтобы они копировались в выходные данные сборки. Чтобы собрать скрипты развертывания, необходимо убедиться, что они хранятся в проекте Visual Studio, а не только в решении. Это можно сделать в Visual Studio, выбрав скрипт развертывания в области Обозреватель решений, а затем в меню Свойства изменив значение Копировать в выходной каталог на Всегда копировать.

Настройка рабочих каталогов

Можно указать рабочий каталог для каждого набора команд, добавляемого в рабочий процесс "сборка-развертывание-тестирование". Если задан рабочий каталог, контроллер сборки выполнит указанные команды в рабочем каталоге каждого компьютера, которому назначена соответствующая роль. Если при добавлении команд в рабочий процесс "сборка-развертывание-тестирование" не задан рабочий каталог, контроллер сборки будет выполнять команды в рабочем каталоге по умолчанию (C:\Windows\System32).

Важно!

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

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

Добавление скриптов развертывания в рабочий процесс

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

Если необходимо добавить команду, которая выполняется из командной строки Windows, например mkdir, или запустить пакетный файл, команда должна начинаться с cmd /c. Например, команда cmd /c $(BuildLocation)\copyexe $(BuildLocation), где copyexe — пакетный файл copyexe.bat, копирует исполняемый файл в локальный каталог на виртуальной машине.

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

  • $(BuildLocation)
    Полный путь к расположению файлов сборки или заданному месту сборки, если оно настроено в рабочем процессе "сборка-развертывание-тестирование". Эта переменная используется для доступа к файлам сборки.

  • $(InternalComputerName_<имя виртуальной машины>)
    Имя компьютера для виртуальной машины в среде SCVMM. Эта переменная используется для доступа к узлу виртуальной машины, когда неизвестно имя компьютера узла. Если скрипт развертывания для настройки веб-сервера требует указать имя компьютера, можно передать скрипту это выражение в качестве аргумента. Например, если имя виртуальной машины для веб-сервера — VM1, а имя компьютера — MyWebServer, можно указать $(InternalComputerName_VM1) в качестве аргумента скрипта, и скрипту будет передано значение MyWebServer.

  • $(ComputerName_<имя виртуальной машины>)

    Примечание

    Сетевая изоляция в средах SCVMM. Если для среды SCVMM используется сетевая изоляция, значение $(InternalComputerName_<VM Name>) совпадает для экземпляров виртуальной машины во всех копиях среды, но значение $(ComputerName_<VM Name>) различается.

    Полное доменное имя виртуальной машины. Эта переменная используется для доступа к компьютеру из-за пределов среды SCVMM. Ее можно предавать в качестве аргумента для настройки веб-сервера. Например, если имя виртуальной машины для веб-сервера — VM1, получить доступ к полному доменному имени виртуальной машины можно, передав скрипту развертывания аргумент $(ComputerName_VM1).

См. также

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

Автоматизированные рабочие процессы сборки, развертывания и тестирования

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

Автоматизация системных тестов