如何在VSTS发布管道中修改应用程序清单?

时间:2018-03-27 06:27:36

标签: powershell azure-devops azure-pipelines azure-pipelines-release-pipeline

我必须在部署到群集时向应用程序清单xml文件添加其他参数。在VSTS中配置了一个发布管道,我必须添加一个任务。

如何实现这一目标?我应该使用Powershell内联脚本吗?如果是这样,我如何修改工件目录中的文件?

@Karthick,感谢您的回答,但我在保存xml时遇到了问题。我确实将Working文件夹设置为 $(build.artifactstagingdirectory)

$appManifestFile = $(build.artifactstagingdirectory)\pkg\ApplicationManifest.xml
$xml = (Get-Content $appManifestFile) -as [Xml]
$newNode = $xml.CreateElement("Parameter")
$newNode.SetAttribute("Name","Test")
$newNode.SetAttribute("Value","Test")
Write-Host $newNode
$xml.ApplicationManifest.Parameters.AppendChild($newNode)
$xml.Save($appManifestFile)

如您所见,我直接从工件访问该文件,然后对其进行修改。此脚本在本地工作正常,但在管道中文件保持不变。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您可以使用构建事件执行How to: Specify Build Events (C#)

如果您希望对VSTS构建管道执行相同操作,可以通过

添加powershell 步骤

1。获取路径到您的工件放置位置

  

enter image description here

2. 路径传递给您的电源shell脚本

  

enter image description here

     

enter image description here

确保将工作目录设置为工件放置位置。这是powershell脚本将被执行的地方

  1. 您需要将目录作为变量传递给PowerShell脚本,这里是'appManifestFile'
      

    enter image description here

  2. 使用'$ appManifestFile'作为var
  3. 添加追加节点的PowerShell脚本
    param
    (
    [string]$appManifestFile = ""
    )
    
    $appManifestFile = $appManifestFile + "\app.manifest"
    
    echo "the path is set to : $appManifestFile"  
    
    $xml = (Get-Content $appManifestFile) -as [Xml] 
    $newNode = $xml.CreateElement("Parameter") 
    $newNode.SetAttribute("Name","Test") 
    $newNode.SetAttribute("Value","Test") 
    $xml.DocumentElement.AppendChild($newNode)
    $xml.Save($appManifestFile)