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


FileTransform@2 — задача преобразования файлов версии 2

Используйте эту задачу для замены маркеров переменными значениями в ФАЙЛАх конфигурации XML или JSON.

Синтаксис

# File transform v2
# Replace tokens with variable values in XML or JSON configuration files.
- task: FileTransform@2
  inputs:
    folderPath: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #xmlTransformationRules: '-transform **\*.Release.config -xml **\*.config' # string. XML Transformation rules. Default: -transform **\*.Release.config -xml **\*.config.
  # Variable Substitution
    #jsonTargetFiles: # string. JSON target files. 
    #xmlTargetFiles: # string. XML target files.

Входные данные

folderPath - Пакет или папка
string. Обязательный. Значение по умолчанию: $(System.DefaultWorkingDirectory)/**/*.zip.

Путь к файлу к пакету или папке.

Переменные: Build и Release. Поддерживаются подстановочные знаки.

Например, $(System.DefaultWorkingDirectory)/**/*.zip. Для zip-папок содержимое извлекается в расположение TEMP, выполняется преобразование, а результаты архивируются в исходном расположении артефакта.


xmlTransformationRules - Правила преобразования XML
string. Значение по умолчанию: -transform **\*.Release.config -xml **\*.config.

Предоставляет разделенный новыми строками список правил файлов преобразования с использованием синтаксиса: -transform <pathToTransformFile> -xml <pathToSourceConfigurationFile>. Путь к файлу результата является необязательным, и если он не указан, исходный файл конфигурации будет заменен преобразованным результирующим файлом.


jsonTargetFiles - Целевые файлы JSON
string.

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

Например, чтобы заменить значение ConnectionString в приведенном ниже примере, необходимо определить переменную как Data.DefaultConnection.ConnectionString в конвейере сборки или выпуска (или среде конвейера выпуска).

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True"
    }
  }
}

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

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


xmlTargetFiles - Целевые XML-файлы
string.

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

Для XML переменные, определенные в конвейерах сборки или выпуска, будут сопоставляться с key записями или name в appSettingsразделах , applicationSettingsи connectionStrings любого файла конфигурации и parameters.xml.

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

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


Параметры управления задачами

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

Выходные переменные

Нет.

Remarks

Новые возможности преобразования файлов версии 2:

  • Более оптимизированные поля задач, позволяющие пользователям включать все функции преобразования (XML), подстановки переменных (JSON и XML) в одном экземпляре задачи.
  • Задача завершается сбоем, если любое из настроенных преобразований или подстановок не применяется или если задача не выполняется.

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

Важно!

Эта задача предназначена для веб-пакетов и требует наличия файла веб-пакета. Он не работает с автономными JSON-файлами.

Преобразования файлов

  • В настоящее время преобразования файлов поддерживаются только для XML-файлов.
  • Чтобы применить xml-преобразование к файлам конфигурации (*.config), необходимо указать разделенный новыми строками список правил файлов преобразования с помощью синтаксиса:-t ransform <path to the transform file> -xml <path to the source file> -result <path to the result file>
  • Преобразования файлов полезны во многих сценариях, особенно при развертывании в службе приложений и необходимости добавления, удаления или изменения конфигураций для разных сред (таких как Dev, Test или Prod) с помощью стандартного синтаксиса преобразованияWeb.config.
  • Эту функцию также можно использовать для преобразования других файлов, включая файлы конфигурации консольного приложения или приложения службы Windows (например, FabrikamService.exe.config).
  • Преобразования файлов конфигурации выполняются до подстановки переменных.

Подстановка переменных

  • В настоящее время для подстановки переменных поддерживаются только форматы ФАЙЛОВ XML и JSON.
  • Маркеры, определенные в целевых файлах конфигурации, обновляются, а затем заменяются значениями переменных.
  • Подстановки переменных выполняются после преобразования файла конфигурации.
  • Подстановка переменных применяется только к ключам JSON, предопределенным в иерархии объектов. Новые ключи не создаются.

Примечание

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

Ниже приведен список исключенных в настоящее время префиксов:

  • agent.
  • azure_http_user_agent
  • build.
  • common.
  • release.
  • system.
  • tf_

Если одни и те же переменные определены как в конвейере выпуска, так и в стадии, переменные, определяемые этапом, заменяют переменные, определенные конвейером.

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

Примеры

Если требуется преобразование XML для выполнения во всех файлах конфигурации с именем с шаблоном .Production.config, правило преобразования должно быть указано следующим образом:

-transform **\*.Production.config -xml **\*.config

Если у вас есть файл конфигурации с именем на основе имени этапа в конвейере, можно использовать:

-transform **\*.$(Release.EnvironmentName).config -xml **\*.config

Чтобы заменить вложенные или иерархические переменные JSON, укажите их с помощью выражений JSONPath. Например, чтобы заменить значение ConnectionString в приведенном ниже примере, необходимо определить переменную Data.DefaultConnection.ConnectionString в конвейере сборки или выпуска (или на этапе конвейера выпуска).

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True"
    }
  }
}

Требования

Требование Описание
Типы конвейеров YAML, классическая сборка, классический выпуск
Выполняется в Агент, DeploymentGroup
Требования Нет
Capabilities Эта задача не удовлетворяет требованиям для последующих задач в задании.
Ограничения команд Любой
Устанавливаемые переменные Любой
Версия агента Все поддерживаемые версии агента.
Категория задач Служебная программа

См. также раздел