我们最近将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]步骤结果:失败
似乎代理正在尝试获取可用工作空间的列表,但它失败了。如果我尝试在计算机上的适当权限下执行命令,代理程序正在运行,我会获得正确的工作区列表。
答案 0 :(得分:2)
system.debug = true
对构建进行排队,您将在日志中获得更多信息。检查日志以获取详细的错误消息。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:*