作为本地系统运行时,VSTS代理服务无法获取代码覆盖率数据

时间:2018-11-28 07:03:31

标签: azure-devops code-coverage azure-pipelines

简短版本:两次提交,一次提交的A和B两个版本,都使用VSTS代理服务在我们的构建服务器上运行

版本A:

  • 代理作为网络服务运行
  • 保存一个267kb的.coverage文件,显示非零%代码覆盖率
  • 运行成功,没有错误,测试记录与版本B相同

Build B:

  • 作为本地系统运行的代理
  • 保存一个1kb的.coverage文件,显示0%的代码覆盖率
  • 运行成功,没有错误(除了质量门由于代码覆盖率为0%而失败,但这是有意的),测试日志与版本A相同。

其他信息:
VSTS代理服务通常以“网络服务”的形式在我们的构建服务器上运行,一切都很好。在我们不得不修改代理服务以使其作为“本地系统”运行之前,它可以访问“ LocalMachine”存储区which we need for Azure AD service auth中的证书。之后,它仍然声称成功完成了所有工作,只是代码覆盖率文件很小并且声称0%的代码覆盖率,这很奇怪,因为肯定正在运行单元测试。这两个测试任务的日志完全相同(除了时间戳和内部版本号等),没有有用的警告或错误。

我确定将代理作为本地系统运行可能不是理想的选择,但是该帐户具有比网络服务更大的权限,因此我不知道这可能是一个权限问题。我可能在设置某些东西时犯了一个错误,但似乎唯一的出路是要么

  • 给予网络服务额外的权限(错误)
  • 将Azure AD服务主体证书重新生成/移动到用于网络服务的“ CurrentUser”证书存储中(感觉很差,但是我不确定为什么)
  • 设置一个新的服务帐户,并辞职,直到永远遇到权限问题(嗯)

我们能以某种方式诊断该测试任务到底发生了什么而无需诉诸命令?还是有更好的方法来管理这些东西?

1 个答案:

答案 0 :(得分:0)

这很烦人:我已修复它,但我不知道如何解决。在向同事演示时,我所做的只是重复了先前的步骤,即重新引导服务器并在两个帐户之间来回切换代理服务两次,此后问题不再重现。似乎这是那些神秘的消失的问题之一,每当您尝试研究它时,它就会隐藏起来。希望它不会回来...