TFS 2018构建Get Sources步骤git fetch超时致构建失败求助
我之前帮团队排查过好几起类似的TFS构建代理Git操作挂起的问题,结合你提供的日志(已经完成delta解析却一直卡住直到超时),可以尝试以下几个针对性的排查和修复步骤:
升级Git版本到兼容稳定版:旧版本的Git(尤其是2.17之前的版本)存在一些在delta解析完成后进程挂起的已知bug。先在代理机器上运行
git --version查看当前版本,如果版本较旧,建议升级到2.20+的LTS稳定版本,很多这类问题都能通过版本升级解决。禁用Git自动垃圾回收:有时候Git在fetch完成后会自动触发
gc(垃圾回收)操作,而代理机器可能因为磁盘IO瓶颈、权限不足等原因导致gc卡住。可以在代理的Git全局配置里执行git config --global gc.auto 0禁用自动gc,之后再手动选择空闲时间对仓库进行垃圾回收。检查代理机器的资源负载:虽然日志显示delta已经100%完成,但Git在后续更新本地索引、写入文件的阶段如果遇到磁盘IO过高(比如其他进程抢占磁盘资源)或者内存不足,也会出现挂起。可以查看构建时段的磁盘使用率、内存占用情况,必要时把仓库迁移到IO性能更好的磁盘,或者给代理机器增加内存。
重置代理的本地仓库:本地仓库的索引文件损坏也可能导致异常挂起。可以手动删除TFS构建代理工作目录下对应的仓库文件夹,让代理重新克隆整个仓库,大概率能解决文件损坏导致的问题。
调整Git的HTTP连接配置:如果是通过HTTPS连接Git仓库,长连接或SSL缓存可能引发问题。可以尝试执行
git config --global http.keepAlive false关闭HTTP长连接,或者清除Git的SSL证书缓存后再测试。
你的构建日志片段:
2018-04-12T10:00:11.9145204Z Resolving deltas: 97% (123/126)
2018-04-12T10:00:11.9145204Z Resolving deltas: 99% (125/126)
2018-04-12T10:00:11.9145204Z Resolving deltas: 100% (126/126)
2018-04-12T10:00:11.9145204Z Resolving deltas: 100% (126/126), ...
内容的提问来源于stack exchange,提问作者shaboinkin

