为什么 Azure DevOps 构建管道的初始化作业占用这么多时间?

Why initialize job of Azure DevOps build pipeline takes up so much time?

我有一个 Azure DevOps 项目,其构建管道需要花费太多时间才能完成。看来问题可以精确定位到 'Initialize job' 和 NuGet 任务。 'initialize job' 中的以下步骤需要几分钟才能完成:

##[debug]Task 'NuGetToolInstaller' already downloaded at 'E:\Agent3\_work\_taskzips\NuGetToolInstaller_2c65196a-54fd-4a02-9be8-d9d1837b7c5d_1.179.0.zip'.
##[debug]Task 'NuGetCommand' already downloaded at 'E:\Agent3\_work\_taskzips\NuGetCommand_333b11bd-d341-40d9-afcf-b32d5ce6f23b_2.179.0.zip'.
##[debug]Task 'PowerShell' already downloaded at 'E:\Agent3\_work\_taskzips\PowerShell_e213ff0f-5d5c-4791-802d-52ea3e7be1f1_1.2.3.zip'.
##[debug]Task 'VSBuild' already downloaded at 'E:\Agent3\_work\_taskzips\VSBuild_71a9a2d3-a98a-4caa-96ab-affca411ecda_1.192.3.zip'.
##[debug]Task 'CopyFiles' already downloaded at 'E:\Agent3\_work\_taskzips\CopyFiles_5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c_2.190.1.zip'.
##[debug]Task 'PublishBuildArtifacts' already downloaded at 'E:\Agent3\_work\_taskzips\PublishBuildArtifacts_2ff763a7-ce83-4e1f-bc89-0ae63477cebe_1.192.0.zip'.

任务 NuGet 中的以下步骤也需要很多时间:

##[debug]Extracting task NuGetCommand from E:\Agent3\_work\_taskzips\NuGetCommand_333b11bd-d341-40d9-afcf-b32d5ce6f23b_2.179.0.zip to E:\Agent3\_work\_tasks\NuGetCommand_333b11bd-d341-40d9-afcf-b32d5ce6f23b.179.0.

奇怪的是,不同项目和组织中具有看似相同的构建定义和代理版本的管道并不慢(秒)并给出不同的调试输出:

##[debug]Task 'NuGetToolInstaller' already downloaded at 'E:\agent\_work\_tasks\NuGetToolInstaller_2c65196a-54fd-4a02-9be8-d9d1837b7c5d.179.0'.
##[debug]Task 'NuGetCommand' already downloaded at 'E:\agent\_work\_tasks\NuGetCommand_333b11bd-d341-40d9-afcf-b32d5ce6f23b.179.0'.
##[debug]Task 'PowerShell' already downloaded at 'E:\agent\_work\_tasks\PowerShell_e213ff0f-5d5c-4791-802d-52ea3e7be1f1.2.3'.
##[debug]Task 'VSBuild' already downloaded at 'E:\agent\_work\_tasks\VSBuild_71a9a2d3-a98a-4caa-96ab-affca411ecda.192.3'.
##[debug]Task 'CopyFiles' already downloaded at 'E:\agent\_work\_tasks\CopyFiles_5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c.190.1'.
##[debug]Task 'PublishBuildArtifacts' already downloaded at 'E:\agent\_work\_tasks\PublishBuildArtifacts_2ff763a7-ce83-4e1f-bc89-0ae63477cebe.192.0'.

看起来慢速代理正在使用 taskzips 文件夹,而快速代理正在使用任务文件夹。自托管代理都 运行 在同一台本地服务器上。我查看了文件夹,takszips 文件夹包含 zip 文件:

       Directory: \atsmodapp01\e$\Agent3\_work\_taskzips

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          07/10/2021    12:52         573233 CopyFiles_5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c_2.190.1.zip
-a---          07/10/2021    12:52       25890948 NuGetCommand_333b11bd-d341-40d9-afcf-b32d5ce6f23b_2.179.0.zip
-a---          07/10/2021    12:51        4613826 NuGetToolInstaller_2c65196a-54fd-4a02-9be8-d9d1837b7c5d_1.179.0.zip
-a---          07/10/2021    12:52          13477 PowerShell_e213ff0f-5d5c-4791-802d-52ea3e7be1f1_1.2.3.zip
-a---          07/10/2021    12:52         974971 PublishBuildArtifacts_2ff763a7-ce83-4e1f-bc89-0ae63477cebe_1.192.0.zip
-a---          07/10/2021    12:52         588839 VSBuild_71a9a2d3-a98a-4caa-96ab-affca411ecda_1.192.3.zip

任务文件夹包含文件夹:

    Directory: \atsmodapp01\e$\agent\_work\_tasks

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          22/10/2020    13:50                Bash_6c731c3c-3c68-459a-a5c9-bde6e6595b5b
d----          17/02/2021    11:44                CmdLine_d9bafed4-0b18-4f58-968d-86655b4d2ce9
d----          02/08/2021    12:41                CopyFiles_5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c
d----          03/03/2021    06:40                DeleteFiles_b7e8b412-0437-4065-9371-edc5881de25b
d----          03/09/2021    12:36                DownloadBuildArtifacts_a433f589-fce1-4460-9ee6-44a624aeb1fb
d----          22/07/2019    15:35                DownloadFileshareArtifacts_e3cf3806-ad30-4ec4-8f1e-8ecd98771aa0
d----          22/07/2019    15:34                DownloadPackage_8d6e8f7e-267d-442d-8c92-1f586864c62f
d----          30/10/2019    15:28                GenerateReleaseNotes_661bc005-61be-430f-b994-065bf08c0f39
d----          30/03/2021    09:36                gitsync_36cbb8f8-6f18-4b55-bdd7-3ecf87044b08
d----          22/11/2020    17:45                GitTag_be6aa0ca-e62f-414d-aaa6-e9524b556482
d----          15/12/2020    12:18                NuGetCommand_333b11bd-d341-40d9-afcf-b32d5ce6f23b
d----          22/07/2019    15:31                NuGetRestore_333b11bd-d341-40d9-afcf-b32d5ce6f23b
d----          15/12/2020    12:18                NuGetToolInstaller_2c65196a-54fd-4a02-9be8-d9d1837b7c5d
d----          30/06/2020    21:16                PowerShell_e213ff0f-5d5c-4791-802d-52ea3e7be1f1
d----          15/09/2021    14:52                PublishBuildArtifacts_2ff763a7-ce83-4e1f-bc89-0ae63477cebe
d----          04/11/2020    12:05                RedgateSqlChangeAutomationBuild_7345fe1b-d099-46f0-a0d1-7292cd17feee
d----          04/11/2020    16:54                RedgateSqlChangeAutomationRelease_c1177c17-3934-4005-ba89-a4549fe4f0a1
d----          26/10/2020    09:40                replacetokens_a8515ec8-7254-4ffd-912c-86772e2b5962
d----          27/09/2020    21:45                rvo-vsts-promotepackage-task_7ca5869f-a901-4012-a50d-d0f9d436ffec
d----          21/07/2021    18:43                UniversalPackages_e0b79640-8625-11e8-91be-db2878ff888a
d----          21/09/2021    16:02                VSBuild_71a9a2d3-a98a-4caa-96ab-affca411ecda
d----          26/10/2020    09:40                xdttransform_98012758-c053-475d-9d6a-fd0773c39e09

我的问题是:为什么处理管道的代理的行为不同,我怎样才能使慢速代理更快或改变它以使其表现得像快速代理?

此致,

帕特里克

区别必须在位于代理安装文件夹根目录中的 .agent 配置文件中。

你的情况:E:\Agent3\

在这个 JSON 风格的配置文件中,存在一个名为“alwaysExtractTask”的条目。 请删除 alwaysExtractTask 行或将其更改为 False。

现在重新启动服务,看看您的代理速度如何!

背景资料:

请检查these release note for more explanation on alwaysExtractTask

这个配置是安装问题的一小段时间,但是 Microsoft removed 从今年 6 月开始。