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

Jyo*_*oti 7 azure-pipelines

我有针对特定环境(dev、qa、uat)的特定配置文件和另一个根 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
Run Code Online (Sandbox Code Playgroud)

另一种方法:

- 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'
Run Code Online (Sandbox Code Playgroud)

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

Hey*_*man 10

- 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"
      
Run Code Online (Sandbox Code Playgroud)

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


小智 9

你试过了吗

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

您可以遵循以下文档:

  • `ren` 不喜欢将路径传递给第二个参数。所以我认为 ren 的正确用法是: `ren $(build.artifactstagingdirectory)\MainWebApi\Web.QA.config web.config` (2认同)

Jan*_*SFT 2

具体应该用什么?

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

以下是详细步骤:

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

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

<?xml version="1.0"?>
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

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

-transform {transform file} -xml {source file} -result Web.config
Run Code Online (Sandbox Code Playgroud)

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

这是步骤 2 和步骤 3 的 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'
Run Code Online (Sandbox Code Playgroud)