构建代理无法下载可用的工作区

时间:2018-01-03 15:44:56

标签: tfs build-agent tfs2018

我们最近将TFS从TFS 2015升级到TFS 2018.我们将基础架构中的构建代理更改为新代理版本2.122.1

当开发人员提交他们的变更集或计划的构建执行时,有时构建会按预期处理,但有时我们会在从TFS存储库中检索源时收到奇怪的错误。

在构建日志中,它们记录为:

  

2018-01-03T15:01:25.6074314Z查询工作空间信息。

     

2018-01-03T15:01:26.5136788Z ## [错误] XML文档(1,1)中存在错误。

如果我打开代理详细日志,我收到以下信息:

  

[2018-01-03 15:01:25Z INFO ProcessInvoker]开始流程:

     

[2018-01-03 15:01:25Z INFO ProcessInvoker]文件名:'tf'

     

[2018-01-03 15:01:25Z INFO ProcessInvoker]参数:'vc workspaces   / format:xml / collection:http://servername:8080/tfs/ProjectCollection/   / loginType:OAuth /login:.,******** / noprompt'

     

[2018-01-03 15:01:25Z INFO ProcessInvoker]工作目录:   'C:\ Agent2017 \ _work \ 10个\ s' 的

     

[2018-01-03 15:01:25Z INFO ProcessInvoker]要求退出代码为零:   '真'

     

[2018-01-03 15:01:25Z INFO ProcessInvoker]编码网页名称:   windows-1252;代码页:'1252'

     

[2018-01-03 15:01:25Z INFO ProcessInvoker]强制终止进程   取消:'错'

     

[2018-01-03 15:01:25Z INFO ProcessInvoker]流程开始于   进程ID 3524,等待进程退出。

     

[2018-01-03 15:01:25Z INFO JobServerQueue]尝试追加1批次网页   控制台线,成功率:1/1。

     

[2018-01-03 15:01:25Z INFO JobServerQueue]尝试上传1个日志文件   或附件,成功率:1/1。

     

[2018-01-03 15:01:26Z INFO ProcessInvoker]退出完成的流程   代码0,经过时间00:00:00.5240505。

     

[2018-01-03 15:01:26Z ERR StepsRunner]从步骤中捕获异常:   System.InvalidOperationException:XML文档中存在错误   (1,1)。 ---> System.Xml.XmlException:根级别的数据是   无效。第1行,第1位   System.Xml.XmlTextReaderImpl.Throw(Exception e)at   System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()at   System.Xml.XmlTextReaderImpl.ParseDocumentContent()at   System.Xml.XmlTextReaderImpl.Read()at   System.Xml.XmlReader.MoveToContent()at   Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTFWorkspaces.Read5_Workspaces()   ---内部异常堆栈跟踪结束---在System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader)   xmlReader,String encodingStyle,Object events)at   System.Xml.Serialization.XmlSerializer.Deserialize(TextReader的   textReader)at   Microsoft.VisualStudio.Services.Agent.Worker.Build.TFCommandManager.d__31.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   Microsoft.VisualStudio.Services.Agent.Worker.Build.TfsVCSourceProvider.d__3.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   Microsoft.VisualStudio.Services.Agent.Worker.Build.BuildJobExtension.d__17.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   Microsoft.VisualStudio.Services.Agent.Worker.JobExtensionRunner.d__20.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   Microsoft.VisualStudio.Services.Agent.Worker.StepsRunner.d__1.MoveNext()   [2018-01-03 15:01:26Z INFO StepsRunner]步骤结果:失败

似乎代理正在尝试获取可用工作空间的列表,但它失败了。如果我尝试在计算机上的适当权限下执行命令,代理程序正在运行,我会获得正确的工作区列表。

2 个答案:

答案 0 :(得分:2)

  1. 尝试使用system.debug = true对构建进行排队,您将在日志中获得更多信息。检查日志以获取详细的错误消息。
  2. 删除构建过程创建的所有工作区,如下面的名称:VS / Team Explorer中的ws_1_2,并将Get Source任务中的clean选项设置为true,然后再次尝试运行构建。< / LI>

答案 1 :(得分:1)

最后,我找到了问题here的答案。

问题是由缓存的代理信息引起的,当我在构建机器上手动执行vc workspaces / format:xml / collection:http://servername:8080/tfs/ProjectCollection/命令时,有时我得到工作区列表,但有时我得到警告加工作区列表(结果在每次调用依赖于缓存使用后,预计不会相同)。由于像

这样的警告
  

本地路径C:\ Agent2017_work \ 10 \ s映射到工作区ws_11_09;服务器http://rwstfs:8080/tfs/ProjectCollection/上的ProjectCollection构建服务和工作区ws_09_10;服务器http://rwstfs:8080/tfs/ProjectCollection/上的ProjectCollection构建服务。从缓存中删除服务器http://rwstfs:8080/tfs/ProjectCollection/上的工作区ws_09_10; ProjectCollection构建服务。请删除冲突的映射。

代理程序无法解析xml文档,因为它前面是非sgml部分。

所以我去了

  

%LocalAppData%\ Microsoft \ Team Foundation \ 7.0 \ Cache

目录,删除的缓存内容和问题都消失了。

编辑: 替代方法可以是使用命令

删除缓存的工作区
  

tf workspaces / remove:*