首页 > 解决方案 > 使用 shell 脚本在 DevOps 中使用替换字符串编辑文件

问题描述

我在 DevOps 中为 Azure 数据工厂创建了一个构建管道,它将从 azure 存储库中获取文件。

在部署更改之前,我想替换构建工件中某些文件中的几个字符串值。

下面提到的是我遵循的步骤。

  1. 在存储库的根文件夹中添加了一个 shell 脚本文件。
  2. 创建了一个指向需要部署的存储库分支的构建管道。
  3. 创建了一个使用构建工件的发布管道。
  4. 在代理作业中添加了一个 shell 脚本,用于替换 repo 中文件中的几个字符串值。

下面是存储库结构的屏幕截图。 在此处输入图像描述

在构建管道中发布工件后,以下是管道中已发布工件的结构。

在此处输入图像描述

我已经在工件中的代理作业中添加了一个示例 shell 脚本,如下所示

在此处输入图像描述

在运行版本时,我收到以下关于路径的错误,如下所示 在此处输入图像描述

如何使用 power shell 通过替换字符串值来更新工件中的文件。有谁知道如何指向工件中的文件并运行替换脚本。如果您可以通过选择文件名来共享示例替换脚本,那将会很有帮助。

标签: azureazure-devopsazure-data-factoryazure-data-factory-2

解决方案


您在发布管道的 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。见下文:

在此处输入图像描述


推荐阅读