我想根据在触发管道的PR中修改了哪些文件来控制VSTS构建管道中运行的单元测试。
有没有一种方法可以检测在为PR触发的VSTS构建过程中在请求中修改了哪些文件,然后根据该信息选择要运行的测试?
答案 0 :(得分:1)
是的,这是可能的:
一种解决方法是在管道中有一个自定义Powershell任务,该任务根据某个文件在上一次提交中是否被更改来设置变量。因此,您可能会有这样的管道:
您的“设置上次提交的文件条件”步骤将包含一个内联powershell脚本,以根据某个字符串是否位于上次提交的文件列表中来设置Build变量,其中“ YOURFILE.cs”是您感兴趣的文件(可以用任何逻辑替换):
$ChangedFiles = & git show --pretty="" --name-only
if ($ChangedFiles -like '*YOURFILE.cs*') {
Write-Output ("##vso[task.setvariable variable=RunTests;]true")
}
else{
Write-Output ("##vso[task.setvariable variable=RunTests;]false")
}
然后,在“运行测试”步骤中,您可以设置一个条件控制选项,该选项将查看此变量,以决定是否运行该组测试:
如果您使用Visual Studio测试任务来运行测试,则还有一个内置选项,可以通过“测试影响分析”功能仅运行受该构建影响的测试。
这可能对您有用,但不能直接回答您的特定问题,范围更广。提供更多信息,on the Azure Devops documentation pages