在Azure DevOps中,任何管道都需要大约一分钟的时间来 checkout 代码。我已经将FETCH Depth配置为1以加快速度,但这对时间没有任何影响。它花了大约10-15秒来“接收对象”,但在它完成代码下载后,它会经历一个“解析增量”和列出标签*[新标签]*的过程,这是我们将历史从TFS迁移到GIT时发生的。
来自LOG的采样线:
Receiving objects: 100% (139543/139543), 391.48 MiB | 19.37 MiB/s, done.
Resolving deltas: 0% (0/91447)
[new tag] TFS_C10006 -> TFS_C10006
管道代码段:
stages:
- stage: Build
jobs:
- job: Build
steps:
- checkout: self
fetchDepth: 1
clean: true
你知道有什么设置可以在管道中打开以忽略标签并跳过增量吗?每次流水线执行都需要相同的时间。
2条答案
按热度按时间sxissh061#
Azure DevOps中有一个新选项,可以在获取Git存储库时不同步标签。
若要通过YAML文件退出同步标签,请在 checkout 步骤中添加noTages:true。如果未指定noTages选项,则与使用noTages:FALSE相同。
如果要更改现有YAML管道的行为,在UI中设置此选项可能比更新YAML文件更方便。要导航到UI,请打开管道的YAML编辑器,选择触发器,然后选择Process,然后选择Checkout步骤。
如果您在YAML文件和UI中都指定了此设置,则在UI中指定的值优先。
另外,请确保您开启了浅层抓取。测试并确认您正在获得更好的时间结果。
参考文献:https://learn.microsoft.com/en-us/azure/devops/release-notes/2022/sprint-209-update?tabs=yaml#do-not-sync-tags-when-fetching-a-git-repository
qhhrdooz2#
您不能配置为不下载
tags
。唯一的方法是设置
clean: false
以加速checkout
,或者禁用checkout
并在YAML中实现您的git克隆。请参见here和here。
您可以在此处查看代理GIT结账代码:
https://github.com/microsoft/azure-pipelines-agent/blob/2224fd66cbf202835846523ee789b18a5f1e6355/src/Agent.Worker/Build/GitCommandManager.cs