git - 通过减少 checkout 时间来提高 Azure 管道性能

标签 git azure-devops azure-pipelines

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

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

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

最佳答案

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

来自 Shallow Fetch 上的 Azure devops 文档:

If your repository is large, this option might make your build pipeline more efficient. Your repository might be large if it has been in use for a long time and has sizeable history. It also might be large if you added and later deleted large files.



Yaml 管道示例:
steps:
- checkout: self
  clean: true
  fetchDepth: 1 # Fetch only one commit
  path: PutMyCodeHere

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

关于git - 通过减少 checkout 时间来提高 Azure 管道性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61138832/

相关文章:

git log --all 在过滤器分支内不起作用

用于白标项目的 Git 策略

azure-devops - 如何在 Azure DevOps 中关注整个 wiki?

azure-devops - 有没有办法在Azure Pipelines条件中使用自定义变量

azure - 等待新部署的应用服务在 Azure Devops 发布管道中重新启动

git - 在推送到子模块时触发 Azure Pipeline Build?

ruby - 在 .gitmodules 中找不到路径 'sinatra-bootstrap' 的子模块映射

azure-devops - 如何在 Azure DevOps 中运行临时干净构建?

具有多个标签的 Azure DevOps Docker 任务

azure - 如何在 Azure DevOps 中导入任务组