我们的 Azure DevOps 组织中有很多代理池,以至于它变得笨拙,因此我们正在寻找管理代理池的最佳实践。我们目前的具体问题是:
多个不同操作系统的代理应该在同一个代理池中,还是应该划分到特定于操作系统的池中?
Microsoft 按操作系统对托管池进行分区,因此走这条路线似乎是个好主意,但在做出此类决定之前了解原因会很有帮助。
要补充的另一件事:我们有几百条管道。当管道碰巧在错误的操作系统上运行时,最近向纯 Linux 池添加的 Windows 代理会导致大量随机管道故障。我的理解是,我们可以向管道添加需求来避免这个问题,但是更新这么多管道会产生大量的工时成本。如果事实证明这确实是要走的路,那么我们将长期努力。
答案 0 :(得分:1)
根据有关 creating agent pools 的文档,以下是您可能想要创建自托管代理池的一些典型情况:
多个不同操作系统的代理是否应该在同一个 代理池,还是应该将它们划分为特定于操作系统的池?
当然,您可以将代理划分为特定于操作系统的池,以便在运行管道时选择正确的操作系统。但是如果要创建新的代理池并更新所有管道的池,也将花费大量时间。此外,如果您的管道之一需要同时在不同的操作系统上运行,您可能需要指定多个池。
在official document中,如果我们在同一个池中有多个不同操作系统的代理,我们可以使用如下需求:
您也可以尝试使用 Rest API 来 add demands in your definitions,这可能会更快。