【问题标题】:How do I handle a large number of files as an input to a build when using VSTS?使用 VSTS 时如何处理大量文件作为构建的输入?
【发布时间】:2017-08-25 01:20:10
【问题描述】:

为了设定期望,我是构建工具的新手。我们目前正在使用托管代理,但我们对其他选项持开放态度。

我们有一个使用 VSTS API 启动构建的本地应用程序。托管构建任务涉及从 GitHub 存储库到 VSO 中的本地文件系统的 获取源代码 步骤。下一步我们需要复制大量文件(大约 10000 个文件以上),构建解决方案并运行测试。

问题是克隆的 GitHub 存储库在 Visual Studio Online 的文件系统中,而我的 10000 个输入文件在本地计算机上。这似乎有点多,尤其是因为我们计划进行 CI 并且每天可能会启动许多构建。

将输入文件移动到克隆的 repo 以便我们构建它的最佳方法是什么?我们应该为此使用托管代理吗?还是最好在我们的本地系统上执行此操作?我查看了VSO docs,但在那里没有找到答案。我不确定我在这里问的问题是否正确。

【问题讨论】:

  • 文件是什么?我假设它们不是代码,但它们是什么内容?
  • 它们是代码文件,必须是构建的一部分。我们正在从元数据和模板生成代码文件,因此即使是很小的更改也可能导致数百个文件的更改。

标签: azure-devops azure-pipelines


【解决方案1】:

有一些方法可以处理这种情况,你可以按照最接近你的情况的方式来处理。

选项 1. 将大文件添加到 github 存储库

如果本地文件只与 github repo 的代码相关,你应该将文件添加到同一个 repo 中,以便在 Get Sources 步骤中克隆所有需要的文件,然后你无需复制文件即可直接构建。

选项 2. 管理另一个 git repo 中的大文件,然后将 git repo 添加为 github repo 的子模块

如果本地大文件也用于其他代码,您可以在单独的repo中管理大文件,并将其视为submodule for github repo by git submodule add <URL for the separate repo>。在您的 VSTS 构建定义中,在 Get sources 步骤中选择 Checkout submodules。那么大文件就可以在构建github代码的时候直接使用了。

选项 3. 在本地计算机上使用私有代理

如果您出于某些原因不想在 github 存储库或单独的 git 存储库中添加大文件,则可以使用私有代理。但是构建运行时间可能没有明显改善,因为改变的运行时间只是将本地文件复制到服务器将本地文件复制到同一个本地机器

【讨论】:

  • 感谢您的指导。子模块和使用私人代理选项对我们有潜力。另一种选择是我们比现在更多地使用获取源步骤。其中一个远程 git 存储库在构建时接受单个文件输入并输出大量文件,然后这些文件随后与另一个存储库的内容相结合,然后进行构建。我认为你帮助我们前进了一点。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多