Azure DevOps 代理池的最佳实践

时间:2021-01-26 23:36:06

标签: azure-pipelines

我们的 Azure DevOps 组织中有很多代理池,以至于它变得笨拙,因此我们正在寻找管理代理池的最佳实践。我们目前的具体问题是:

多个不同操作系统的代理应该在同一个代理池中,还是应该划分到特定于操作系统的池中?

Microsoft 按操作系统对托管池进行分区,因此走这条路线似乎是个好主意,但在做出此类决定之前了解原因会很有帮助。

要补充的另一件事:我们有几百条管道。当管道碰巧在错误的操作系统上运行时,最近向纯 Linux 池添加的 Windows 代理会导致大量随机管道故障。我的理解是,我们可以向管道添加需求来避免这个问题,但是更新这么多管道会产生大量的工时成本。如果事实证明这确实是要走的路,那么我们将长期努力。

1 个答案:

答案 0 :(得分:1)

根据有关 creating agent pools 的文档,以下是您可能想要创建自托管代理池的一些典型情况:

  • 你是一个项目的成员,你想使用一组机器 由您的团队拥有,用于运行构建和部署作业。
  • 您是基础架构团队的成员,并希望建立一个 用于所有项目的代理池。
  • 您想与多个项目共享一组代理机器,但是 不是全部。

<块引用>

多个不同操作系统的代理是否应该在同一个 代理池,还是应该将它们划分为特定于操作系统的池?

当然,您可以将代理划分为特定于操作系统的池,以便在运行管道时选择正确的操作系统。但是如果要创建新的代理池并更新所有管道的池,也将花费大量时间。此外,如果您的管道之一需要同时在不同的操作系统上运行,您可能需要指定多个池。

official document中,如果我们在同一个池中有多个不同操作系统的代理,我们可以使用如下需求:enter image description here

您也可以尝试使用 Rest API 来 add demands in your definitions,这可能会更快。