在Azure Pipelines中复制并重命名配置文件

时间:2020-09-09 08:36:47

标签: azure-pipelines

我有针对特定环境(dev,qa,uat)的特定配置文件和另一个root web.config。部署的代码读取web.config。因此,我一直尝试在Azure Pipelines中复制内容或重命名文件。

- task: CopyFiles@2
      displayName: 'Copy Specific Config'
      inputs:
        SourceFolder: 'Client.WebApi.Core/Configs/Web.QA.config'
        TargetFolder: '$(build.artifactstagingdirectory)\MainWebApi'

- task: CmdLine@2
      inputs:
        script: rename $(build.artifactstagingdirectory)\MainWebApi\Web.QA.config 
        $(build.artifactstagingdirectory)\MainWebApi\web.config

另一种方法:

- task: PowerShell@2
      inputs:
        targetType: 'inline'
        script: |
          copy-item -path Client.WebApi.Core/Configs/Web.QA.Config -destination Client.WebApi.Core/web.config
          TargetFolder: '$(build.artifactstagingdirectory)/MainWebApi'

我尝试了各种组合,例如重命名,复制和重命名,然后将内容复制到新的web.config文件中,等等。 到底应该使用什么?

3 个答案:

答案 0 :(得分:1)

您尝试过

- task: CmdLine@2
  inputs:
    script: ren $(build.artifactstagingdirectory)\MainWebApi\Web.QA.config 
    $(build.artifactstagingdirectory)\MainWebApi\web.config

您可以遵循以下文档:

答案 1 :(得分:0)

究竟应该使用什么?

您可以使用名为File transform的内置任务将web。<环境> .config转换为web.config。然后,您可以使用“复制文件”任务将web.config复制到$(build.artifactstagingdirectory)

详细步骤如下:

步骤1。您需要添加一个转换文件,该文件与源文件的路径相同。

如果您不想对结果文件进行任何更改,只需创建带有一行脚本的xml文件:

<?xml version="1.0"?>

如果要进行一些更改,请将更改写入转换文件。这是example

步骤2。在管道中,搜索并添加“文件转换”任务。

enter image description here

您需要勾选“ XML转换”,并在“转换规则”中,编写以下脚本:

-transform {transform file} -xml {source file} -result Web.config

第3步。搜索并添加“复制文件”任务。将Web.config文件复制到$(build.artifactstagingdirectory)

这是step2和step3的Yaml脚本。

steps:
- task: FileTransform@1
  displayName: 'File Transform: '
  inputs:
    folderPath: '{folder path}'
    enableXmlTransform: true
    xmlTransformationRules: '-transform {transform file} -xml {source file} -result Web.config'
    fileType: xml
- task: CopyFiles@2
  displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
  inputs:
    SourceFolder: '{folder path}'
    Contents: Web.config
    TargetFolder: '$(build.artifactstagingdirectory)\MainWebApi'

答案 2 :(得分:0)

- task: PowerShell@2
  displayName: 'Copy Specific Config'
  inputs:
    targetType: inline
    script: Copy-Item -Path "Client.WebApi.Core/Configs/Web.QA.Config" -Destination "$(build.artifactstagingdirectory)/MainWebApi/web.config"
      

这是实现您想要的非常直接的方式。如果您愿意,您甚至可以在 Destination 路径中使环境(dev、qa、uat)动态化。