Многоступенчатый конвейер YAML не применяет специфичное для среды преобразование XML - PullRequest
1 голос
/ 05 октября 2019

Я преобразовал шаги, выполняемые в типичном конвейере выпуска, в многоэтапный конвейер YAML.

Проблема в том, что преобразование Web.config (XML), примененное задачей AzureRmWebAppDeployment@4, не работает, как ранеебольше.

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

Из журналов видно, что Web.Release.config применяется, но для Web.TA.config (специфичная для среды конфигурация) других преобразований не происходит, даже если он присутствует и имя этапа соответствует имени конфигурации.

У меня есть следующий (упрощенный) YAMLфайл для многоступенчатого конвейера:

trigger: none

variables:
  azureSubscriptionProject: 'SubscriptionName'
  artifactDropDirectory: '$(Agent.BuildDirectory)/ProjectName'

stages:
- stage: Build
  jobs:
  - job: Build
    pool:
      vmImage: windows-2019
      demands:
      - msbuild
      - visualstudio
      - vstest
    variables:
      buildConfiguration: 'Release'
      buildPlatformSolutionLevel: 'Any CPU'
      buildPlatformProjectLevel: 'AnyCPU'
    steps:
    - template: azure-pipelines-ci-build-steps-template.yml
    - template: azure-pipelines-ci-build-publishing-steps-template.yml
- stage: TA
  dependsOn: Build
  jobs:
  - deployment: TA
    pool:
      vmImage: windows-2019
    environment: 'TA'
    timeoutInMinutes: 0
    strategy:
      runOnce:
        deploy:
          steps:
          # ...          
          - task: AzureRmWebAppDeployment@4
            displayName: 'Deploy ProjectName'
            inputs:
              azureSubscription: $(azureSubscriptionProject)
              webAppName: '$(AzureResourcesPrefix)-project-name'
              package: '$(artifactDropDirectory)/web-applications/ProjectName.zip'
              enableCustomDeployment: true
              removeAdditionalFilesFlag: true
              xmlTransformation: true
          # ...

Выдержка из журналов этого шага / задачи:

Start tranformation to 'D:\a\_temp\temp_web_package_39967480923393817\Content\D_C\a\1\s\src\ProjectName\obj\Release\Package\PackageTmp\Web.config'.
Source file: 'D:\a\_temp\temp_web_package_39967480923393817\Content\D_C\a\1\s\src\ProjectName\obj\Release\Package\PackageTmp\Web.config'.
Transform  file: 'D:\a\_temp\temp_web_package_39967480923393817\Content\D_C\a\1\s\src\ProjectName\obj\Release\Package\PackageTmp\Web.Release.config'.
Transformation task is using encoding 'System.Text.UTF8Encoding'. Change encoding in source file, or use the 'encoding' parameter if you want to change encoding.

Кто-нибудь также сталкивался с этой проблемой? Я делаю что-то не так, или это ошибка или даже дизайн?

Я только что понял, что есть новая FileTransform задача , но я бы предпочел не использовать ее, если она должна работать в болеепростой способ.

1 Ответ

0 голосов
/ 08 октября 2019

Установка переменной Release.EnvironmentName решила ее, и преобразование конфигурации для конкретной среды было инициировано. Это возможно на уровне этапа (если все задания имеют одно и то же имя среды) и на уровне задания.

Пример:

# ...
- stage: TA
  dependsOn: Build
  variables:
    Release.EnvironmentName: TA
  jobs:
  - deployment: TA
    pool:
      vmImage: windows-2019
    environment: 'TA'
    # ...

Ответ предоставлен MSFT на developercommunity.visualstudio.com .

...