我正在使用TFS执行每晚构建,其中包括使用TFS测试代理的几个步骤.我正在运行最新版本的TFS /测试代理(2015年 - 更新3),目前还没有其他版本正在运行.通常(可能是一半时间),当夜间作业运行时,"Visual Studio测试代理部署"步骤失败,并显示以下错误:
该作业已被放弃,因为代理程序Agent-XXX未更新锁定.确保代理正在运行,而不是休眠,并且没有丢失与服务的通信.
这是由于测试代理的日志文件(在_diag下)中发现的错误:
此代理的会话已存在.下次重试前睡30秒.
Microsoft.TeamFoundation.DistributedTask.WebApi.TaskAgentSessionConflictException:任务代理Agent-XXX已拥有所有者XXX的活动会话.
这个问题直接引用在这里,间接谈到这里.
我发现此问题的解决方案是重新启动运行测试代理的服务器,这会清除所有死会话,并且在服务器启动备份后,测试运行正常.我认为这实际上是在前面提到的帖子中所做的.重置配置的结果是重新启动服务.
虽然在链接文章中作为解决方案呈现,但它只是暂时的.即使服务器重新启动并且构建成功运行,第二天问题也会再次出现,需要手动干预才能使构建运行.
我可以安排一项任务来重置服务,甚至可以在每晚构建运行之前直接重启服务器,但它让我感觉像是绷带而不是修复.有没有人以前经历过这个问题,如果有的话,有没有办法防止它首先出现?
更新1我只是设置了一个在我的主要测试运行前5分钟运行的构建,它运行Bat脚本以重新启动托管我的测试代理的所有服务器.这是一种解决方法,但似乎解决了这个问题.希望有一天有人可以提出比这更好的解决方案,但是现在,我必须在TFS中运行自动化测试.
更新2我现在有三台服务器,这三台服务器都出现了同样的问题,但很难准确确定它何时发生.在不产生停机时间的情况下扩展变通方法,这证明是非常具有挑战性的.
更新3更好的一天来了,我将TFS升级到2018,并将构建代理升级到最新版本,此问题不再发生,我认为它是旧构建代理中的一个错误.我仍然没有原始版本的构建代理的解决方案...