Azure devops 如何从运行在V2.x VSTS代理上的测试代码中访问VSTS工作项?

Azure devops 如何从运行在V2.x VSTS代理上的测试代码中访问VSTS工作项?,azure-devops,Azure Devops,构建成功后,我们在构建代理(V1.105.xxx)上运行E2E自动化测试。测试代码利用Visual studio单元测试框架访问VSTS工作项,以使用数据驱动方法加载测试数据(每个测试用例方法链接到一个测试用例工作项): [数据源(“Microsoft.VisualStudio.TestTools.DataSource.Tes‌​tCase“‌​sualstudio.com/Defau‌​收集‌​ct“,“1111111”,DataAccessMethod.Sequential) 我们使用PAT

构建成功后,我们在构建代理(V1.105.xxx)上运行E2E自动化测试。测试代码利用Visual studio单元测试框架访问VSTS工作项,以使用数据驱动方法加载测试数据(每个测试用例方法链接到一个测试用例工作项):

[数据源(“Microsoft.VisualStudio.TestTools.DataSource.Tes‌​tCase“‌​sualstudio.com/Defau‌​收集‌​ct“,“1111111”,DataAccessMethod.Sequential)

我们使用PAT auth以交互模式运行V1.x构建代理,如下所示:

C:\agent\agent\VsoAgent.exe/登录名:e2etest,xxxxxxxxxxxxxxxxx;AuthType=PAT

但是我们找不到一种方法,使用patauth运行V2.x代理,以便访问VSTS工作项


V2.x代理中是否仍支持PAT?

使用PAT配置生成代理时,PAT令牌仅用于代理的初始配置。有关详细信息,请参阅

关于交互模式,如果缓存的帐户无法访问VST或没有缓存的帐户,则在配置或运行生成代理时将提示登录窗口以允许您进行身份验证。您需要更改此用户的权限


您可以尝试在版本控制管理页面中将此用户的读取权限设置为拒绝,队列生成需要下载该源代码并检查结果,生成将不再启动。

总结问题和解决方案:

根据starain的评论,在旧的V1.x代理中,关于从我们的测试代码访问VSTS工作项,它与我们用来在交互模式下运行代理的PAT令牌无关。实际上,我们使用VM的本地管理员帐户运行代理,我们曾经用它连接到VSTS,并且凭证被缓存。测试代码只是使用该缓存凭据访问VSTS工作项

因此V2.x的解决方案很简单,只需使用本地管理员帐户运行代理服务,无需以交互模式运行


感谢starain的大力帮助!

对不起,我没有理解你的意思。你是说对于V2.x代理,如果我运行“run.cmd”命令,它将提示登录窗口,并且它还支持PAT auth type?@Youxu否,如果运行“run.cmd”时没有有效的缓存凭据,它将提示登录窗口命令。配置代理中使用的PAT仅用于配置。也用于V1.XXX。谢谢!我通过使用本地管理员帐户运行V2.x代理服务解决了此问题。(之前,我使用本地服务帐户运行它)当然:)在我在新回复中总结解决方案之前,您能帮助我理解为什么使用本地管理运行代理有效吗?代理注册是否将PAT令牌存储在某个位置,并且本地管理帐户使用该令牌访问VSTS工作项?顺便说一句:我们利用Visual studio的UT框架编写数据驱动测试用例,例如:[DataSource(“Microsoft.VisualStudio.TestTools.DataSource.TestCase”、“”、“1111111”、DataAccessMethod.Sequential)]@Youxu当前用户访问VSTS时可以缓存凭据。因此,您需要先连接到VSTS,然后在同一帐户下运行驱动测试,它将使用缓存的凭据访问资源。