Azure DevOps管道:如何仅在原因为"签入而不复制"时运行受影响的测试



我有一个构建过程,其中有几个测试任务。当它们全部运行时,其中一些可能会变得相当耗时,而且大多数时候,大多数测试都是不期望的。

尽管如此,我还是希望所有这些测试都在一个预定的触发器上运行。

我知道我可以简单地克隆管道,并使用一个仅用于受影响测试的门控,另一个用于所有测试的调度,但作为OO开发人员,我不喜欢这样。

我已经尝试将复选框参数链接到流程变量并使用PowerShell进行修改,但未能使其正常工作(如何在Azure构建管道中使用PowerShell修改流程变量(。

难道没有别的办法吗?

您可以通过对只想在计划构建期间运行的测试任务设置以下条件来实现这一点:

eq(variables['Build.Reason'], 'Schedule')

请参阅此处查看预定义变量的列表(搜索"Build.Resoreason"(:

https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml

有关表达式的更多信息,请参阅此处:

https://learn.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops

看起来这方面的功能现在已经内置。根据文档,可以设置一个变量,该变量将导致所有测试运行:

通过设置构建变量。即使在VSTest任务中启用了TIA,也可以通过将变量DisableTestImpactAnalysis设置为true来为特定构建禁用TIA。此覆盖将强制TIA运行该构建的所有测试。在随后的构建中,TIA将回到优化的测试选择

最新更新