排查管道无法启动的问题
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
如果管道已排入队列但从未启动,请检查以下项。
- 并行作业限制 - 没有可用的代理,或者你已达到免费限制
- 无法从 Azure DevOps 访问防火墙后的 Azure 密钥保管库
- 你没有足够的并发性
- 你的作业可能正在等待审批
- 所有可用的代理都在使用中
- 代理的能力无法匹配需求
- 检查 Azure DevOps 状态,查看是否存在服务降级
注意
以下场景不会使用并行作业:
- 如果使用发布管道或多阶段 YAML 管道,则运行仅在主动部署到一个阶段时使用并行作业。 当发布正在等待批准或手动干预时,它不使用并行作业。
- 使用发布管道运行服务器作业或部署到部署组时,不会使用任何并行作业。
了解详细信息:管道如何使用并行作业、添加预先部署审批、服务器作业、部署组
并行作业限制 - 没有可用的代理,或者你已达到免费限制
如果你当前正在运行其他管道,则可能没有任何剩余的并行作业,或者可能已达到免费限制。
查看可用的并行作业
注意
Azure Pipelines 暂时对公共项目和某些专用项目禁用了新组织中 Microsoft 托管的并行作业的自动免费授予。 如果你没有任何并行作业,管道将失败并出现以下错误:##[error]No hosted parallelism has been purchased or granted. To request a free parallelism grant, please fill out the following form https://aka.ms/azpipelines-parallelism-request
。 按以下部分所述,检查 Microsoft 托管的并行作业,如果并行作业数为零,可以请求免费授予并行作业。 若要为组织请求免费授予并行作业,请提交请求。 请留出 2-3 个工作日来等待回复你的授权请求。
若要检查限制,请导航到“项目设置”、“并行作业”。
如果使用 Microsoft 托管代理,请检查 Microsoft 托管的并行作业对专用项目或公共项目的限制,具体根据 Azure DevOps 项目是专用项目(默认)还是公共项目而定。
查看限制后,检查并发,查看当前正在运行的作业数以及可用的作业数。
如果你当前正在运行其他管道,则可能没有任何剩余的并行作业,或者可能已达到免费限制。
无法从 Azure DevOps 访问防火墙后的 Azure 密钥保管库
如果无法从管道访问 Azure Key Vault,防火墙可能会阻止 Azure DevOps Services 代理 IP 地址。 必须将每周 JSON 文件中发布的 IP 地址加入允许列表。 有关详细信息,请参阅 Microsoft 托管代理:网络。
你没有足够的并发性
若要检查有多少并发,请执行以下步骤:
若要检查限制,请导航到“项目设置”、“并行作业”。
还可以通过导航到
https://dev.azure.com/{org}/_settings/buildqueue?_a=concurrentJobs
或从日志中选择“管理并行作业”来访问此页。确定要在(Microsoft 托管池或自托管池)上检查哪个池的并发,然后选择“查看正在运行的作业”。
你将看到显示“当前正在运行 X/X 个作业”的文本。 如果两个数字相同,挂起的作业将等到当前正在运行的作业完成。
可以通过从“项目设置”中选择“代理池”来查看所有作业,包括已排队的作业。
在本例中,并发作业限制为 1,其中一个作业正在运行,一个作业已排队。 当所有代理都忙于运行作业时,如本例所示,在其他作业已排队后将显示以下消息:
The agent request is not running because all potential agents are running other requests. Current position in queue: 1
。 在本例中,作业位于队列中的下一个位置,因此其位置为 1。
你的作业可能正在等待审批
你的管道可能不会进入下一阶段,因为它正在等待审批。 有关详细信息,请参阅定义审批和检查。
所有可用的代理都在使用中
如果所有代理当前正忙,作业可能会等待。 若要检查代理,请执行以下步骤:
导航到
https://dev.azure.com/{org}/_settings/agentpools
选择要检查的代理池(在本例中为 FabrikamPool),然后选择“代理”。
此页显示当前联机/脱机和正在使用的所有代理。 还可以从此页面向池添加其他代理。
代理的能力无法匹配需求
如果管道的需求与任何代理的功能不匹配,管道将无法启动。 如果只有部分代理具有所需的带宽,且当前正在运行其他管道,则你的管道将会停止,直到其中一个代理可用。
若要检查为代理和管道指定的功能和需求,请参阅功能。
注意
功能和需求通常仅用于自托管代理。 如果管道的需求与代理的系统功能不匹配,除非你已使用匹配的功能显式标记代理,否则管道将不会获得代理。
TFS 代理连接问题
测试代理连接时配置失败(仅适用于本地 TFS)
Testing agent connection.
VS30063: You are not authorized to access http://<SERVER>:8080/tfs
如果在配置代理时收到上述错误,请登录到 TFS 计算机。 启动 Internet Information Services (IIS) 管理器。 确保启用“匿名身份验证”。
代理的通信中断
此问题通过以下错误消息来指明:
The job has been abandoned because agent did not renew the lock. Ensure agent is running, not sleeping, and has not lost communication with the service.
此错误可能指示代理与服务器的通信中断了几分钟。 检查以下内容以排除代理计算机上的网络或其他中断:
- 验证自动更新是否已关闭。 如果更新后重新启动计算机,将导致生成或发布失败,并出现上述错误。 以受控方式应用更新,以避免此类中断。 在重启代理计算机之前,请在池管理页中将代理标记为已禁用,并让任何正在运行的生成完成。
- 验证睡眠设置是否已关闭。
- 如果代理在虚拟机上运行,请避免在数分钟内执行任何可能严重影响计算机运行状况的实时迁移或其他 VM 维护操作。
- 如果代理在虚拟机上运行,则相同的操作系统更新建议和睡眠设置建议适用于主机。 还有其他任何影响主机的维护操作。
- 性能监视器日志记录或其他运行状况指标日志记录有助于将这种类型的错误与代理计算机上的受约束资源可用性相关联(磁盘、内存、页面文件、处理器、网络)。
- 将错误与网络问题关联的另一种方法是无限期地 Ping 服务器,并将输出以及时间戳转储到文件。 使用正常间隔,例如 20 或 30 秒。 如果使用的是 Azure Pipelines,则需要 Ping Internet 域,例如 bing.com。 如果使用的是本地 TFS 服务器,则需要在同一网络上 Ping 服务器。
- 验证计算机的网络吞吐量是否足够。 可以执行联机速度测试以检查吞吐量。
- 如果使用代理,请验证代理是否已配置为使用代理。 请参阅代理部署主题。
TFS 作业代理未启动
这可能通过 Web 控制台中的消息“正在等待请求的代理”来指明。 验证 TFSJobAgent(显示名称:Visual Studio Team Foundation 后台作业代理)Windows 服务是否已启动。
通知 URL(1.x 代理版本)配置错误
这可能通过 Web 控制台中的消息“正在等待来自代理的控制台输出”来指明,并且该过程最终会超时。
如果通知 URL 不一致,可能会导致工作进程无法连接到服务器。 请参阅“Team Foundation 管理控制台”、“应用层”。 1.x 代理使用已配置的 URL 侦听消息队列。 但是,从队列中拉取作业消息时,工作进程使用通知 URL 与服务器通信。
检查 Azure DevOps 状态,查看是否存在服务降级
在 Azure DevOps 服务状态门户中,查看是否有可能导致服务降级的任何问题,例如代理的排队时间延长。 有关详细信息,请参阅 Azure DevOps 服务状态。
我需要更多帮助。 我发现了一个 bug。 我有一个建议。 我应该去什么位置?
在开发者社区报告任何问题或提交反馈。
欢迎提供建议: