创建和管理代理池

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

注意

在 Microsoft Team Foundation Server (TFS) 2018 和更低版本中,生成和发布管道被称为“定义”,运行被称为“生成”,服务连接被称为“服务终结点”,阶段被称为“环境”,而作业被称为“阶段” 。

代理池是代理的集合。 将代理组织到代理池中,而不是单独管理每个代理。 在 TFS 中,池的范围限定为整个服务器;因此,可以跨项目集合和项目共享代理池。

代理队列提供对项目中代理池的访问权限。 创建生成或发布管道时,请指定它使用的队列。 队列的范围限定为 TFS 2017 及更新版本中的项目,因此只能在项目中的生成和发布管道中使用队列。

若要与多个项目共享代理池,请在其中每个项目中创建指向同一代理池的代理队列。 虽然跨项目的多个队列可以使用同一代理池,但项目中的多个队列不能使用相同的代理池。 此外,每个代理队列只能使用一个代理池。

TFS 2017 和 TFS 2018 生成系统体系结构

代理池是代理的集合。 将代理组织到代理池中, 而不是单独管理 每个代理。 配置代理时,它会注册到单个池,并在创建管道时指定管道在其中运行的池。 运行管道时,它会在该池中满足管道 需求的 代理上运行。

在 Azure Pipelines 中,池的范围限定为整个组织;因此,可以跨项目共享代理计算机。

在Azure DevOps Server中,代理池的范围限定为整个服务器;因此,你可以跨项目和集合共享代理计算机。

注意

代理池作业在单个代理上运行作业。 如果需要在所有代理(例如经典发布管道的部署组)上运行作业,请参阅 “预配部署组”。

从管理员设置中的“代理池”选项卡创建和管理代理池。

如果你是组织管理员,请在管理员设置中的“代理池”选项卡中创建和管理代理池。

  1. 选择 Azure DevOps组织设置

    选择“组织”设置。

  2. 选择 代理池

    选择“代理池”选项卡。

  1. 选择 Azure DevOps集合设置

    选择“集合”设置。

  2. 选择 代理池

    选择代理池。

  1. 选择 Azure DevOps集合设置

    集合设置,2019。

  2. 选择 代理池

    选择代理池,2019。

  1. 导航到项目,然后选择“ 设置 ” (齿轮图标) >代理队列

    选择“设置”、“代理队列”、“2018”。

  2. 选择 “管理池”。

    选择“管理池”,2018。

从项目设置中的“代理队列”选项卡创建和管理代理队列。

如果你是项目团队成员,则从项目设置中的“代理池”选项卡创建和管理代理队列。

导航到项目并选择 “项目设置”代理

导航到项目并选择“项目设置”代理池。

导航到项目并选择 “项目设置”代理

导航到项目并选择“项目设置”,代理池 (2020) 。

导航到项目并选择 “项目设置”代理

导航到项目并选择“项目”设置,代理池 (2019) 。

导航到项目,然后选择“ 设置 ” (齿轮图标) >代理队列

选择设置、代理队列、TFS 2018。

默认代理池

默认情况下提供以下代理池:

  • 具有各种 Windows、Linux 和 macOS 映像的 Azure Pipelines 托管池。 有关可用映像及其已安装软件的完整列表,请参阅 Microsoft 托管的代理

    注意

    Azure Pipelines 托管池将替换以前的托管池,这些池具有映射到相应映像的名称。 在以前的托管池中拥有的任何作业都会自动重定向到新的 Azure Pipelines 托管池中的正确映像。 在某些情况下,你仍可能会看到旧的池名称,但在后台,托管作业使用 Azure Pipelines 池运行。 有关详细信息,请参阅 2019 年 7 月 1 日 - Sprint 154 发行说明中的单托管池发行说明。

默认情况下,项目中的所有参与者都是托管池上的 用户 角色的成员。 这样,项目中的每个参与者都可以使用 Microsoft 托管的代理创作和运行管道。

在管道中指定池

AZURE DEVOPS SERVER 2019 及更高版本支持 YAML 管道。

若要从 Azure DevOps Services YAML 管道中的 Azure Pipelines 池中选择 Microsoft 托管的代理,请使用表中的 YAML VM 映像标签指定映像的名称。

pool:
  vmImage: ubuntu-latest # This is the default if you don't specify a pool or vmImage.

若要使用不需的专用池,请执行以下操作:

pool: MyPool

有关详细信息,请参阅YAML 架构

管理池和队列

从管理员设置中的“代理池”选项卡创建和管理代理池。

如果你是组织管理员,请在管理员设置中的“代理池”选项卡中创建和管理代理池。

  1. 选择 Azure DevOps组织设置

    选择“组织”设置。

  2. 选择 代理池

    选择“代理池”选项卡。

  1. 选择 Azure DevOps集合设置

    选择“集合”设置。

  2. 选择 代理池

    选择代理池。

  1. 选择 Azure DevOps集合设置

    集合设置,2019。

  2. 选择 代理池

    选择代理池,2019。

  1. 导航到项目,然后选择“ 设置 ” (齿轮图标) >代理队列

    选择“设置”、“代理队列”、“2018”。

  2. 选择 “管理池”。

    选择“管理池”,2018。

从项目设置中的“代理队列”选项卡创建和管理代理队列。

如果你是项目团队成员,则从项目设置中的“代理池”选项卡创建和管理代理队列。

导航到项目并选择 “项目设置”代理

导航到项目,然后选择“项目”设置,“代理池”。

导航到项目,然后选择 “项目”设置“代理池”。

导航到项目并选择“项目设置”,代理池 (2020) 。

导航到项目,然后选择 “项目”设置“代理池”。

导航到项目并选择“项目设置”、“代理池” (2019) 。

导航到项目,然后选择 “设置 ” (齿轮图标) >代理队列

选择设置、代理队列、TFS 2018。

池用于运行作业。 了解如何为作业指定池

如果有很多用于不同团队或目的的自承载代理,可能需要创建其他池,如下所示。

创建代理池

下面是可能需要创建自承载代理池的一些典型情况:

  • 你是项目的一个成员,你希望使用团队拥有的一组计算机来运行生成和部署作业。 首先,在项目设置的代理池页上选择 “安全性 ”,确保你有权在项目中创建池。 必须具有 管理员 角色才能创建新池。 接下来,选择 “添加池 ”,然后选择用于在组织级别 创建新 池的选项。 最后 ,安装 代理并将其配置为该代理池的一部分。

  • 你是基础结构团队的成员,希望设置一个代理池以用于所有项目。 首先,通过导航到组织设置中的代理池页,确保你是所有 代理池 中具有 管理员 角色的组的成员。 接下来,创建新的 代理池 ,并在创建池时选择在所有 项目中自动预配相应代理池 的选项。 此设置可确保所有项目都有权访问此代理池。 最后 ,安装 代理并将其配置为该代理池的一部分。

  • 你想要将一组代理计算机与多个项目共享,但并非与所有项目共享。 首先,导航到其中一个项目的设置,添加代理池,然后选择在组织级别 创建新 池的选项。 接下来,转到其他每个项目,并在其中每个项目中创建一个池,同时选择从 组织使用现有代理池的选项。 最后, 安装和 配置代理以成为共享代理池的一部分。

  • 你是项目的一个成员,你希望使用团队拥有的一组计算机来运行生成和部署作业。 首先,请确保你是所有 中具有 管理员 角色的组的成员。 接下来,在项目设置中 创建新的项目代理池 ,然后选择创建新 组织代理池的选项。 因此,将同时创建组织和项目级代理池。 最后 ,安装 代理并将其配置为该代理池的一部分。

  • 你是基础结构团队的成员,希望设置一个代理池以用于所有项目。 首先,请确保你是所有 中具有 管理员 角色的组的成员。 接下来,在管理员设置中 创建新的组织代理池 ,并在创建池时选择自动 预配所有项目中对应的项目代理池 的选项。 此设置确保所有项目都有指向组织代理池的池。 系统为现有项目创建池,以后每当创建新项目时,系统就会这样做。 最后 安装 代理并将其配置为该代理池的一部分。

  • 你想要将一组代理计算机与多个项目共享,但并非与所有项目共享。 首先在其中一个项目中创建项目代理池,然后选择在创建该池时创建新 组织代理池 的选项。 接下来,转到其他每个项目,并在选择 使用现有组织代理池的选项时在每个项目中创建池。 最后, 安装和 配置代理以成为共享代理池的一部分。

代理池的安全性

了解代理池的安全性的工作原理有助于控制代理的共享和使用。

角色 在每个代理池上定义,这些角色的成员 身份 控制可在代理池上执行的操作。

组织设置中代理池的角色 目的
读者 此角色的成员可以查看代理池和代理。 通常使用此角色来添加负责监视代理及其运行状况的操作员。
服务帐户 此角色的成员可以使用组织代理池在项目中创建项目代理池。 如果你根据上述指南创建新的项目代理池,则通常不必在此处添加任何成员。
管理员 除了上述所有权限之外,此角色的成员还可以在组织代理池中注册或取消注册代理。 在项目中创建项目代理池时,这些成员还可以引用组织代理池。 最后,他们还可以管理所有组织代理池角色的成员身份。 创建组织代理池的用户会自动添加到该池的管理员角色。

代理池”选项卡中的“所有代理池 ”节点用于控制 所有 组织代理池的安全性。 单个组织代理池的角色成员身份将自动继承自“所有代理池”节点的成员身份。 使用 TFS 或Azure DevOps Server时,默认情况下,TFS 和 Azure DevOps Server 管理员也是“所有代理池”节点的管理员。

角色还在每个项目代理池上定义,这些角色中的成员身份控制可在项目级别在代理池上执行的操作。

项目设置中代理池上的角色 目的
读者 此角色的成员可以查看项目代理池。 通常使用此函数添加负责监视该项目代理池中的生成和部署作业的操作员。
User 创作管道时,此角色的成员可以使用项目代理池。
管理员 除了上述所有操作之外,此角色的成员还可以管理项目代理池的所有角色的成员身份。 创建池的用户会自动添加到该池的管理员角色。

代理池”选项卡中的“所有代理池 ”节点用于控制项目中 所有 项目代理池的安全性。 单个项目代理池的角色成员身份将自动继承自“所有代理池”节点的成员身份。 默认情况下,以下组将添加到“所有代理池”的管理员角色:生成管理员、发布管理员、项目管理员。

“代理池”选项卡中 的安全 操作用于控制项目中 所有 项目代理池的安全性。 单个项目代理池的角色成员身份将自动继承自此处定义的内容。 默认情况下,以下组将添加到“所有代理池”的管理员角色:生成管理员、发布管理员、项目管理员。

常见问题解答

如果不计划维护时段,代理何时会运行维护?

如果未计划任何窗口,则该池中的代理将不会运行维护作业。

什么是维护作业?

可以将代理池配置为定期清理过时的工作目录和存储库。 这应减少代理耗尽磁盘空间的可能性。 维护作业是在代理池设置中的项目集合或组织级别配置的。

若要配置维护作业设置,请执行以下操作:

  1. 选择 Azure DevOps组织设置

    选择“组织”设置。

  2. 选择 代理池

    选择“代理池”选项卡。

  1. 选择 Azure DevOps集合设置

    选择“集合”设置。

  2. 选择 代理池

    选择代理池。

  1. 选择 Azure DevOps集合设置

    集合设置,2019。

  2. 选择 代理池

    选择代理池,2019。

  1. 导航到项目,然后选择“ 设置 ” (齿轮图标) >代理队列

    选择“设置”、“代理队列”、“2018”。

  2. 选择 “管理池”。

    选择“管理池”,2018。

选择所需的池,然后选择 “设置” 以配置该代理池的维护作业设置。

重要

必须具有 管理生成队列 权限才能配置维护作业设置。 如果未看到 “设置” 选项卡或“ 维护历史记录 ”选项卡,则你没有该权限,默认情况下授予 管理员 角色。 有关详细信息,请参阅 代理池的安全性

维护作业设置

TFS 的维护作业设置

配置所需的设置,然后选择 “保存”。

选择 “维护历史记录 ”以查看当前代理池的维护作业历史记录。 可以下载并查看日志,以查看采取的清理步骤和操作。

维护作业历史记录

维护按代理池执行,而不是按计算机进行;因此,如果单个计算机上有多个代理池,则仍可能会遇到磁盘空间问题。

自承载代理池的维护作业看起来停滞不前。 为什么?

通常,当维护作业等待在代理池中不再运行的代理上运行时,维护作业会“卡住”。 例如,当代理被故意脱机,或者与代理通信时出现问题时,就会发生这种情况。

排队要运行的维护作业将等待 7 天才能运行。 之后,如果未运行,它们将自动设置为失败状态。 无法更改此时间限制。

七天限制不同于 维护作业超时 设置。 后者控制代理执行维护所花费的最大分钟数。 计时器在作业启动时启动,而不是在代理上排队作业时启动。

我尝试创建使用现有组织代理池的项目代理池,但控件灰显。为什么?

在“创建项目代理池”对话框中,如果现有组织代理池已被另一个项目代理池引用,则无法使用它。 每个组织代理池只能由给定项目集合中的一个项目代理池引用。

我无法选择 Microsoft 托管的池,并且无法对生成进行排队。 如何修复此问题?

要求 Azure DevOps 组织的所有者授予使用池的权限。 请参阅 代理池的安全性

我需要更多托管的生成资源。 我该怎么办?

答:Azure Pipelines 池为每个 Azure DevOps 组织提供云托管的生成代理和每月的免费生成分钟数。 如果需要更多 Microsoft 托管的生成资源,或者需要并行运行更多作业,则可以: