我有三个版本。
构建A构建我们的整个环境,构建B和C被克隆,但随后被剥离以仅构建特定部分和来自不同分支。自从这样做以来,我们已经看到了Build A triple的构建时间。它在每个构建上运行tf vc workspace /delete
。
Build C也会删除它的工作区,但构建B却没有。在存储库选项卡上,所有三个都将Clean设置为false。
是否可以在任何地方查看/设置“获取源”任务的选项?什么会导致一个构建不执行此操作而另外两个构建不执行此操作?
答案 0 :(得分:2)
TFS构建管道的获取源步骤中只有三个TFVC options。
没有任何其他额外选项来控制获取源任务。
首先建议您检查是否在Visual Studio Build任务中设置了Clean = true
,您需要在此处取消选中它。
如果未选中“清除”选项,则本地构建服务器和构建代理上的构建始终刷新工作区始终会清除TFVC存储库。尝试此解决方案:完全擦除代理目录并重新启动,这可能会解决问题。另一种方法是重新配置构建代理并再次触发构建。
此外,您还可以在构建定义中禁用默认的获取源步骤。并使用您自己的脚本来执行获取源/拉文件以绕过工作区映射问题。如何,请关注:Is it able to ignore/disable the first step Get source in vNext Build?
答案 1 :(得分:0)
我找到了答案。通过添加System.debug = true,我能够获得工作空间中实际映射的视图。然后我将其与构建存储库中所有映射的列表进行匹配。我发现当我们映射文件夹及其子文件夹时,只在工作区定义中创建父文件夹映射。
当Get Sources运行时,它会查找匹配的工作区名称,然后首先执行简单的计数检查。当存储库中的映射数与工作空间中的映射数不匹配时,它将失败并立即删除并重建工作空间。
通过删除子文件夹映射,我的获取源任务从11+分钟下降到秒。