azure - 使用 shell 脚本在 DevOps 中使用替换字符串编辑文件
问题描述
我在 DevOps 中为 Azure 数据工厂创建了一个构建管道,它将从 azure 存储库中获取文件。
在部署更改之前,我想替换构建工件中某些文件中的几个字符串值。
下面提到的是我遵循的步骤。
- 在存储库的根文件夹中添加了一个 shell 脚本文件。
- 创建了一个指向需要部署的存储库分支的构建管道。
- 创建了一个使用构建工件的发布管道。
- 在代理作业中添加了一个 shell 脚本,用于替换 repo 中文件中的几个字符串值。
在构建管道中发布工件后,以下是管道中已发布工件的结构。
我已经在工件中的代理作业中添加了一个示例 shell 脚本,如下所示
如何使用 power shell 通过替换字符串值来更新工件中的文件。有谁知道如何指向工件中的文件并运行替换脚本。如果您可以通过选择文件名来共享示例替换脚本,那将会很有帮助。
解决方案
您在发布管道的 powershell 任务中看到的上述错误是因为您将 指向script path
一个.sh1
文件,而 powershell 任务需要一个.ps1
文件。即使您在script path
字段中指定的路径值是正确的,如果文件不是 .ps1 文件,powershell 任务仍然会失败并出现错误。
如果脚本是 bash 脚本,则应使用Bash任务而不是 powershell 任务。
您可以在 powershell 脚本中查看以下简单示例,以替换工件文件中的 json 值。看到这个线程。
$json = Convertfrom-json (get-content "_Source_alias\artifactsName\arm_template.json")
$json.parameter.value = $(PipelineVariables)
ConvertTo-Json $json -Depth 4 | Out-File _Source_alias\artifactsName\arm_template.json -Force
如果您使用ARM 模板部署任务部署 arm 模板。Template parameters
此任务允许您通过配置字段和字段来替换模板参数Override template parameters
。见下文: