Azure DevOps YAML 构建管道卡在自托管代理上

Azure DevOps YAML build pipeline stuck on self-hosted agent

我对 运行 自托管代理上基于 YAML 的构建管道有疑问。触发构建后,它会卡在为作业准备代理 - 等待请求排队

天蓝色-pipelines.yml 看起来像这样:

trigger:
- master

pool:
  name: Default

steps:
- script: echo Hello, world!
  displayName: 'Run a one-line script'

如果我更改为 Microsoft 托管代理,构建确实有效:

trigger:
- master

pool:
  vmImage: ubuntu-16.04

steps:
- script: echo Hello, world!
  displayName: 'Run a one-line script'

奇怪的是,我还有其他现有的 YAML 构建管道,这些管道在自托管代理上运行良好,但我尝试创建的所有新管道最终都陷入了 正在等待请求排队.

我试过目前最新版本的代理守护程序,2.164.8 和 2.165.0,都没有用。我还检查了我是否不受 DevOps 中并行作业的最大数量限制。

The strange thing is that I have other existing YAML build pipelines that is working fine on the self-hosted agents, but all new pipelines I try to create just ends up getting stuck with Waiting for the request to be queued.

您只指定使用 Default 代理池。因此它将在该池中挑选一名可用代理来 运行 工作。

前往 Organization Settings => Agent Pools 检查 Default 代理池中的可用代理。

我们应该确保我们有一个可用的代理 版本 2.164.8 和更高版本,它应该是 在线 状态并且 启用。然后我们可以暂时禁用该池中的其他代理,再次 运行 您的管道以检查它是否有帮助。 (在这种情况下,它应该选择好的代理到 运行 你的管道)

我想也许您在其他旧的 yaml 管道中对 pool: 有不同的定义。或者你可以新建一个名为MyPool的Agent Pool,在MyPool中新建一个agent,然后在你的yaml中指定使用name: MyPool来检查Default中的agent是否有问题池.

原来是代理池的权限问题。在 Organization Settings => Agent Pools => POOL_NAME => Security 中,有一个名为 Grant access permission to all pipelines 的设置。启用此功能后,我的构建现在可以正常工作了。

确保并检查服务器上 Windows 服务中的代理是 运行。我遇到了看似相同的问题,但根本原因不同。 Azure Pipeline Agent... 服务在计划外中断后停止,导致服务未重新启动。某人或某些进程已将服务启动 属性 设置为“自动启动(延迟)”而不是“自动启动”。