【问题标题】:Fast build with TFS build server/agent and GIT monorepo使用 TFS 构建服务器/代理和 GIT monorepo 快速构建
【发布时间】:2019-10-28 10:33:05
【问题描述】:

我们正在考虑将我们当前的 TFVC 团队项目放入一个 GIT monorepo。

支持或反对 monorepos 的论点都不是很有说服力。我们现在在 TFVC 中链接不同团队项目时遇到问题,这就是我们考虑使用 monorepo 的原因。我们考虑 GIT,因为 TFVC 在合并和检测文件移动方面存在严重问题。即使直接告诉 Visual Studio IDE 这是一个移动而不是删除/添加,这似乎落后了 10 到 20 年。

我现在想知道使用 monorepo 时的构建速度。

构建代理是否足够聪明

  • 只获取它需要的东西(文件夹/文件)
  • 没有任何历史记录

从而加快进程?

或者通常是整个 repo 被克隆,我将不得不在构建之后执行任何构建步骤,例如程序集版本控制,只对新构建进行更新,并且也是为了很好的措施(TFVC 总是留下文件)每周删除一次构建代理上的源文件?

关于多个构建定义:每个构建定义都必须获得自己的存储库克隆吗?总共会有 5 个构建,完全不同的解决方案以及主要解决方案的不同分支。

附加信息:团队很小(我们不是 Google),整个 repo 大小约为 1-2GB。我们目前正在使用 TFS 2017,没有立即升级的计划。

【问题讨论】:

    标签: git tfsbuild tfvc monorepo


    【解决方案1】:

    only get what it needs (folders/files)目前无法在获取源步骤中指定要下载的部分文件。与使用映射不同,这似乎仅在使用 TFVC 时可用。

    由于 Git 依赖于存在的完整存储库 状态(提交是指向工作文件夹状态的指针,其中包括处于该状态的所有文件),因此不可能只抓取一些文件或仓库中的文件夹。

    但是,为了加快构建过程,每次都获取整个 git 存储库。您可以设置 clean=false 并检查 shadow fetch 以仅在构建过程中获取修改过的文件。

    Shallow Fetch:允许您仅下载存储库的最新快照。下载速度会更快,但可能会导致工具 像 GitVersion 失败(它依靠历史数据来计算 版本号)。

    Clean: False: 将保留先前构建的内容,允许您增量获取源代码、增量构建 使用支持它的工具。您可以将 Clean:False 与自定义组合 执行更有针对性的清理的步骤。

    来源链接: How to get modified files alone in TFS Build (Git)

    有关更多详细信息,您还可以在我们的官方文档中查看 Azure DevOps Git 的 get source code part

    此外,如果您的 repo 太大或其中包含太多二进制文件。 考虑将其拆分为更小的存储库,或者如果它有很多二进制文件,则使用 Git-LFS 处理二进制文件。

    【讨论】:

    • 非常感谢!我也可以在没有历史记录的情况下进行获取/克隆吗?不过,这看起来确实很有希望。
    • @AndreasReiff 抱歉,再次查看您的问题后,发现我对您的问题有点误解。以为您只想获取更改的文件。但你真正想要的是得到一些指定的(文件夹/文件)。目前无法在获取源步骤期间指定要下载的部分文件。由于 Git 依赖于存在的完整存储库状态(提交是指向工作文件夹状态的指针,其中包括该状态下的所有文件),因此不可能只获取存储库中的一些文件或文件夹。还更新了我的回复。
    • @AndreasReiff 我认为浅获取是您正在寻找的最接近的东西。如果您想限制下载的历史记录。实际上这会导致git fetch --depth=n。如果您的存储库很大,此选项可能会使您的构建管道更高效。如果您的存储库已经使用了很长时间并且具有相当大的历史记录,那么它可能会很大。如果您添加并稍后删除大文件,它也可能很大。
    • @AndreasReiff 你对这张票还有什么顾虑吗?如果没有,我的回复帮助或给出了正确的方向。感谢您将其标记为答案,这也将帮助社区中的其他人。
    • 不,谢谢,但有时我希望得到其他答案。我标记为已回答。还想知道这里的否决票......认为社区已经结束了深思熟虑的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 2018-03-11
    • 2014-04-01
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多