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