continuous-integration - Azure DevOps 中的条件生成解决方案
问题描述
我正在开发一个使用多个小型项目/解决方案的大型应用程序。每个解决方案都内置在它们各自的代理中。类似于下面的截图
现在的问题是即使更改了单个项目文件,也会编译所有项目/解决方案。
为了减少 CI 构建时间,我想在构建中添加条件表达式,只有在它们各自的源发生更改时才会构建项目。
我知道这可以在 Azure DevOps 中通过Custom condition using variable expressions
. 但我不确定如何检查相应的源代码是否已更改
有谁知道variable expression
我需要在这里写什么?
解决方案
好吧,我看到您正在使用 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"
}
}
推荐阅读
- functional-programming - 杂质会影响操作的关联性吗?
- flutter - Read an online text file and put it into a variable
- discord - 试图放慢速度
- python - 如何使用 scikit-learn 中的 SelectFromModel 正确进行特征选择?
- flutter - 测试中未找到材质小部件
- javascript - moment js `format` 方法打破时间
- java - 在 Springboot 2.3.0 中无法覆盖嵌入式 Tomcat 版本
- javascript - JavaScript 中的原型继承与扩展运算符
- c - 为什么要在 for 循环中声明 va_list?
- c# - Xunit 测试按钮单击事件中的 if 条件