运行 自托管 Azure DevOps 代理维护

Running maintenance on self-hosted Azure DevOps agents

我有几个自托管的 Azure DevOps 代理(每个都安装在专用的本地服务器上),我需要对它们执行定期维护(即打补丁等)。是否有一种好方法可以在 Azure DevOps 中定义这些维护 windows,以便服务器管理员可以完成他们的工作而不必担心中断任何正在进行的 build/release 任务?

似乎有一个与配置重复维护相关的设置 (Organization Settings -> Agent Pools -> <Pool Name>-> Settings [tab]) 但它似乎将适用于整个池,并且很难判断哪个代理将在哪个时间段被视为离线。 不幸的是,我找不到任何关于它的文档,也不确定 Azure DevOps 是否也会在代理机器上做一些事情(即 运行 清理、更新代理等)

目前,该过程涉及在 Azure DevOps 中具有管理员权限的人员禁用允许服务器管理员执行定期维护的代理,并在服务器管理员完成后重新启用它。如果服务器管理员不能每次都让 Azure DevOps 管理员参与此类例程,那就太好了。

由于您拥有自己的 Azure Pipelines 代理,因此维护应该更容易,并且您可以完全控制是否进行自动维护。如果您使用 Microsoft 的托管代理,则无法从 Microsoft 更新托管代理,因为这些代理由 Microsoft 独家维护。

最好的方法是在一个机器实例上拥有多个代理,然后将这些代理组织到一个池中。如果你有多个池,那么你可以将 Azure DevOps 配置为在每个池上有不同的维护 window 计划以具有不同的时间,并给一些时间来下载和配置自己。

例如,我通常在每个月的某个日期,例如周日凌晨等周末配置维护window。对于我拥有的任何池,我在每个池上给了它们 40 分钟的间隔以进行维护,以便为代理提供足够的时间来下载、更新和重新启动。

请进一步查阅这些文档以获取详细说明和用例:

对于 Azure DevOps 服务器:

  1. https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/agents?view=azure-devops-2019
  2. https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/pools-queues?view=azure-devops-2019

对于 Azure DevOps 服务(在云 TFS 上,以前称为 Visual Studio Team Services):

  1. https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/agents?view=azure-devops
  2. https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/pools-queues?view=azure-devops