排查管道无法启动的问题

Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019

如果管道已排入队列但从未启动,请检查以下项。

注意

以下场景不会使用并行作业:

  • 如果使用发布管道或多阶段 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 Key Vault

如果无法从流水线访问 Azure Key Vault,防火墙可能会阻止 Azure DevOps Services 的代理 IP 地址。 必须将每周 JSON 文件中发布的 IP 地址加入允许列表。 有关详细信息,请参阅 Microsoft 托管代理:网络

你没有足够的并发性

若要检查有多少并发,请执行以下步骤:

  1. 若要检查限制,请导航到 项目设置并行作业

    并发管道限制

    也可以通过导航到 https://dev.azure.com/{org}/_settings/buildqueue?_a=concurrentJobs来访问此页面,或者从日志中选择 管理并行作业

    管理并行作业

  2. 确定要在(Microsoft 托管池或自托管池)上检查哪个池的并发,然后选择“查看正在运行的作业”。

  3. 你将看到显示“当前正在运行 X/X 个作业”的文本。 如果两个数字相同,挂起的作业将等到当前正在运行的作业完成。

    查看正在进行的作业

    可以通过在 项目设置中选择 代理池 来查看所有作业,包括排队中的作业。

    查看排队作业

    在本例中,并发作业限制为 1,其中一个作业正在运行,一个作业已排队。 当所有代理都忙于运行作业时,如本示例中所示,当其他作业排队时,将显示以下消息:The agent request is not running because all potential agents are running other requests. Current position in queue: 1。 在本例中,作业位于队列中的下一个位置,因此其位置为 1。

你的作业可能正在等待审批

管道可能不会移动到下一阶段,因为它正在等待审批。 有关详细信息,请参阅定义审批和检查

所有可用的代理都在使用中

如果所有代理当前正忙,作业可能会等待。 若要检查代理,请执行以下步骤:

  1. 导航到 https://dev.azure.com/{org}/_settings/agentpools

  2. 选择要检查的代理池(在本例中为 FabrikamPool),然后选择“代理”。

    代理状态

    此页面显示当前联机/脱机和使用的所有代理。 还可以从此页面向池添加其他代理。

与代理的功能不匹配的要求

如果管道的需求与任何代理的功能不匹配,管道将无法启动。 如果只有部分代理具有所需的带宽,且当前正在运行其他管道,则你的管道将会停止,直到其中一个代理可用。

若要查看为代理和管道指定的功能和需求,请参阅 功能

注意

功能和需求通常仅用于自托管代理。 如果你的管道要求与代理的系统能力不匹配,除非你已经明确标记了具有匹配功能的代理,否则你的管道将无法获得代理。

TFS 代理连接问题

测试代理连接时配置失败(仅限本地 TFS)

Testing agent connection.
VS30063: You are not authorized to access http://<SERVER>:8080/tfs

如果在配置代理时收到上述错误,请登录到 TFS 计算机。 启动 Internet Information Services (IIS) 管理器。 确保已启用 匿名身份验证

已启用 TFS 匿名身份验证

代理丢失通信

此问题表现为错误消息:

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 命令给互联网域名,例如 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 服务状态

我需要更多帮助。 我发现了一个错误。 我有一个建议。 我该去哪儿?

获取订阅、计费和技术支持

开发人员社区报告任何问题或提交反馈。

欢迎你提供的建议: