【问题标题】:Multi-stage YAML pipeline does not apply environment-specific XML transformation多阶段 YAML 管道不应用特定于环境的 XML 转换
【发布时间】:2019-10-05 12:48:08
【问题描述】:

我将在典型发布管道中执行的步骤转换为多阶段 YAML 管道。

问题在于AzureRmWebAppDeployment@4 任务应用的Web.config (XML) 转换不再像以前那样工作。

这种行为的记录方法是,首先将发布配置用于转换,然后是特定于环境的配置。

从日志中我可以看到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 task,但如果它应该以更简单的方式工作,我宁愿不使用它。

【问题讨论】:

    标签: azure-devops azure-pipelines multistage-pipeline


    【解决方案1】:

    设置变量Release.EnvironmentName 解决了它并触发了特定于环境的配置转换。这在阶段级别(如果所有作业共享相同的环境名称)和作业级别是可能的。

    一个例子:

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

    MSFT on developercommunity.visualstudio.com提供的答案。

    【讨论】:

    • 感谢您在这里分享您的解决方案,您可以接受它作为答案,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档此线程,谢谢
    猜你喜欢
    • 2020-11-23
    • 1970-01-01
    • 2021-10-28
    • 2022-12-11
    • 2020-06-10
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多