如何在 Azure Devops 中为发布管道执行路径过滤器

How to do Path filter for Release pipeline in Azure Devops

我正在做一个 DevOps 练习,我在 Azure DevOps Repo(一个项目一个文件夹)中维护不同项目的代码。需要为所有创建单个发布管道。

我正在尝试创建一个发布管道,我在其中使用 Artifact 源作为 DevOps 存储库(因为我直接部署 ARM 模板,不需要构建)。现在,我需要触发发布以更改该特定 ARM 文件夹(即,如果对项目 2 进行了更改)。如果我在项目 1 中进行更改,则不应触发。

如何实现?

使用 Build Pipeline 是可行的,因为我们可以为各自的文件夹添加路径过滤器。我做到了,并且按预期工作,即如果我在 Project 1 中进行更改,只会触发相应的 Build 1

我正在为 Azure DevOps 发布管道使用 classis 编辑器。在启用 CD 触发器时,我没有看到路径过滤器的任何选项。

没有这样的开箱即用的解决方案,您需要手动处理它以检测类似

的变化
$files=$(git diff HEAD HEAD~ --name-only)
$temp=$files -split ' '
$count=$temp.Length
echo "Total changed $count files"
For ($i=0; $i -lt $temp.Length; $i++)
{
  $name=$temp[$i]
  echo "this is $name file"
  if ($name -like "SubFolderA/*")
    {
      Write-Host "##vso[task.setvariable variable=MicroserviceAUpdated]True"
    }
}

然后您可以在特定部署任务的自定义条件下使用此变量。