多阶段 YAML 管道不应用特定于环境的 XML 转换
Multi-stage YAML pipeline does not apply environment-specific XML transformation
我将在典型发布管道中执行的步骤转换为多阶段 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
# ...
此 step/task 的日志摘录:
Start tranformation to 'D:\a\_temp\temp_web_package_39967480923393817\Content\D_C\a\s\src\ProjectName\obj\Release\Package\PackageTmp\Web.config'.
Source file: 'D:\a\_temp\temp_web_package_39967480923393817\Content\D_C\a\s\src\ProjectName\obj\Release\Package\PackageTmp\Web.config'.
Transform file: 'D:\a\_temp\temp_web_package_39967480923393817\Content\D_C\a\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,但如果它应该以更简单的方式工作,我宁愿不使用它。
设置变量 Release.EnvironmentName
解决了这个问题,并触发了特定于环境的配置转换。这在阶段级别(如果所有作业共享相同的环境名称)和作业级别是可能的。
一个例子:
# ...
- stage: TA
dependsOn: Build
variables:
Release.EnvironmentName: TA
jobs:
- deployment: TA
pool:
vmImage: windows-2019
environment: 'TA'
# ...
我将在典型发布管道中执行的步骤转换为多阶段 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
# ...
此 step/task 的日志摘录:
Start tranformation to 'D:\a\_temp\temp_web_package_39967480923393817\Content\D_C\a\s\src\ProjectName\obj\Release\Package\PackageTmp\Web.config'.
Source file: 'D:\a\_temp\temp_web_package_39967480923393817\Content\D_C\a\s\src\ProjectName\obj\Release\Package\PackageTmp\Web.config'.
Transform file: 'D:\a\_temp\temp_web_package_39967480923393817\Content\D_C\a\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,但如果它应该以更简单的方式工作,我宁愿不使用它。
设置变量 Release.EnvironmentName
解决了这个问题,并触发了特定于环境的配置转换。这在阶段级别(如果所有作业共享相同的环境名称)和作业级别是可能的。
一个例子:
# ...
- stage: TA
dependsOn: Build
variables:
Release.EnvironmentName: TA
jobs:
- deployment: TA
pool:
vmImage: windows-2019
environment: 'TA'
# ...