首页 > 解决方案 > Azure DevOps 中的条件生成解决方案

问题描述

我正在开发一个使用多个小型项目/解决方案的大型应用程序。每个解决方案都内置在它们各自的代理中。类似于下面的截图 在此处输入图像描述

现在的问题是即使更改了单个项目文件,也会编译所有项目/解决方案。

为了减少 CI 构建时间,我想在构建中添加条件表达式,只有在它们各自的源发生更改时才会构建项目。

我知道这可以在 Azure DevOps 中通过Custom condition using variable expressions. 但我不确定如何检查相应的源代码是否已更改 在此处输入图像描述

有谁知道variable expression我需要在这里写什么?

标签: continuous-integrationazure-devops

解决方案


好吧,我看到您正在使用 Git Repo,您​​可以通过以下方式执行此操作

作为第一步,您需要确定是否修改了哪个项目/解决方案。

您可以从我的答案中找到解决方案,在这里您可以看到我使用了一个简单的 powershell 脚本来提取修改后的文件,并启用相应的变量。

用于提取修改文件的示例 Powershell 脚本

$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"
    }
}

推荐阅读