【问题标题】:Improve azure pipeline performance by reducing checkout time通过减少结帐时间来提高 Azure 管道性能
【发布时间】:2020-04-10 10:55:37
【问题描述】:

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

我们可能在项目开始时向存储库添加了一些不必要的大文件,这可能导致存储库有点膨胀。我找到了一些关于如何从存储库中删除大文件的文档,但是该文档对此非常模糊。这是尝试改善结帐时间的正确方法吗?如果是这样,有没有人可以详细描述如何从 git 存储库中删除不需要的文件并将其推送到 azure devops?

如果我可以做任何其他事情来提高结帐速度(除了使用私人代理),我愿意接受想法

【问题讨论】:

    标签: git azure-devops azure-pipelines


    【解决方案1】:

    可以通过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 文档

    【讨论】:

    • 这听起来很有希望。我去看看效果如何
    • 只从 git 获得 1 次提交有什么缺点吗?用于创建一个构建。
    • 不,只要您只与当前提交交互,这通常是构建中的情况,没有缺点。例如,您不能做的是显示 git 历史记录,或者检查或比较其他提交或分支。 (与之前的提交相比,可以通过指定 fetchDepth: 2 轻松解决,但要使用 n 任意提交或分支签出或比较,您必须克隆整个 repo,但这些不是通常在构建中完成的操作。
    • @danielorn 你知道像 GitVersion 这样的工具是否能够确定正确的版本号吗? F.e.在构建开发分支时,可能需要从主/主分支读取标签?
    猜你喜欢
    • 2015-10-07
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多