是否可以配置 Azure DevOps Server 2020,以便 Alice 提交的 PR 的 PR 验证构建将在 Alice 机器上运行的构建代理上运行
我们可以在 Alice 的机器上安装自托管代理,打开组织设置->代理池->选择代理->单击选项卡 Capabilities->搜索字段Agent.ComputerName
,然后打开 PR 构建定义并添加需求,如下所示。
然后 PR 构建将使用指定的代理运行,您可以查看此文档:指定需求
以获取更多详细信息。
此外,如果 PR 构建没有找到匹配的代理,则构建将不会与另一个代理一起运行。
更新1
每个开发人员在他们的所有者机器上都有他们的所有者代理,对吧?
检查此文档:预定义变量,它包含变量Build.RequestedFor
,Build.RequestedForEmail
如果管道是拉取请求触发器,它将显示拉取请求创建者姓名和电子邮件,将其添加到管道需求中。如
然后,让所有开发人员为其代理添加功能,例如 TriggerName = {他们的电子邮件或显示名称}。由于我使用了变量Build.RequestedForEmail
,因此在我的代理中,我添加了以下功能:
然后,如果我创建一个拉取请求,构建将通过我自己的机器代理运行。
更新 2
例如,原始 PR 构建名称是 A。打开它并添加默认需求(您可以添加任何内容)
添加新的构建定义名称 B,添加任务 power shell 并输入 power shell 脚本以调用下面的 REST API 以更新 A 定义
定义 - 获取
GET https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=6.1-preview.7
定义 - 更新
PUT https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=6.1-preview.7
然后将构建 B 添加为拉取请求构建。
更新3
是否可以配置 Azure DevOps Server 2020,以便 Alice 提交的 PR 的 PR 验证构建将在 Alice 的机器上运行的构建代理上运行,并且只有在没有此类代理的情况下,它才会选择在其上运行的“标准”构建代理构建服务器?
如果“真实”最初以构建代理为目标,那么当辅助代理确定开发人员有单独的代理时会发生什么?
真正的构建定义有需求,如果构建默认运行需求,它将运行标准构建代理。
辅助之一,我们需要添加条件来运行 power shell 脚本来更新真实的构建需求。如果 Alice 的机器有匹配的代理,它将更新真实的构建需求,然后真实的构建将运行 Alice 的机器代理。