通过减少结帐时间来提高天蓝色管道的性能

时间:2020-04-10 10:55:37

标签: git azure-devops azure-pipelines

我们已经使用azure devop已有一段时间了,并且在存储库中有一个非常大的套件,带有大量的yaml管道。它具有各种并行作业,并且我们有多个托管代理可并行运行这些作业。为了加快构建速度,我在进行各种优化(例如缓存nuget包)。但是,由于我们存储库的大小,管道作业甚至在开始任何任务之前都要运行大约2分半钟,因为它正在运行checkout任务以将源获取到托管代理。

我们可能在项目开始时就向存储库中添加了一些不必要的大文件,这可能导致存储库有点膨胀。我已经找到了一些有关如何从存储库中删除大文件的文档,但是该文档含糊不清。这是尝试改善结帐时间的正确方法吗?如果是这样,有谁能给我详细说明如何从git存储库中删除不需要的文件并将其推送到天蓝色的devops?

如果我还有其他方法可以提高结帐速度(除了使用私人代理人),那么我很乐意

1 个答案:

答案 0 :(得分:4)

可以通过checkout关键字来自定义结帐行为。特别是,可以指定fetchDepth(默认为无限制)来进行浅层提取,这可以提高性能。

摘自Shallow Fetch上的Azure devops文档:

如果您的存储库很大,此选项可能会使您的构建 流水线效率更高。您的存储库可能已经很大 长期使用,历史悠久。也可能是 大,如果您添加了大文件,后来又删除了大文件。

Yaml管道示例:

steps:
- checkout: self
  clean: true
  fetchDepth: 1 # Fetch only one commit
  path: PutMyCodeHere

yaml管道中的how to specify fetchDepth的Azure devops文档