使用 C# 中的 azure devops API 在发布和构建定义中更新代理池

Posted

技术标签:

【中文标题】使用 C# 中的 azure devops API 在发布和构建定义中更新代理池【英文标题】:Updating agent pools in release and build definitions using the azure devops API in C# 【发布时间】:2022-01-12 08:45:48 【问题描述】:

我们正面临将 Azure Devops 环境大规模迁移到 Azure 的问题。这也意味着在迁移完成后,所有(经典)发布定义和构建定义都必须使用新的代理池进行更新。问题是我们有(很多)很多,手动更新所有这些将是一项艰巨的工作。

是否可以使用 Azure Devops REST API 完成此操作?如果是,如何(在 C# 中)?我正在考虑类似的事情:

列出所有构建/发布定义(我猜,如果有过滤功能,一次就太多了) 遍历定义,然后遍历所有代理作业(用于构建定义)和/或所有阶段,然后遍历阶段内的代理作业(用于发布定义) 使用新代理池更新所有代理作业(基于当前池) 保存评论?

这在 C# 中是否可以使用 API REST 调用(或 .NET 客户端库)?如果是,怎么做?

【问题讨论】:

【参考方案1】:

update build definition 和 update release definition 有一个 Rest API。

因此,您首先需要获取build 和release 定义列表,然后循环它们并更新池。

您可以将 Rest API 用于您想要的每种语言。如果你想要 C#,你可以使用 Azure DevOps .NET client libraries。

【讨论】:

谢谢!在遇到一些麻烦之后,我设法使用 .NET 客户端库更新了发布定义。最大的问题是找到与发布定义中配置的代理池匹配的代理池。在 Azure DevOps GUI 中,似乎连接了一个代理池,但它实际上是一个连接的代理队列(两者的 id 不同,幸运的是代理队列与代理池具有 1-1 关系)。第二个问题是更新 QueueId,因为它隐藏得很好(与其他属性不同)en 只能在转换结果对象时获取/设置。我会尽快在上面的更新中发布代码。

以上是关于使用 C# 中的 azure devops API 在发布和构建定义中更新代理池的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps 发布 Api 400 错误请求错误

C# - 如何从 Azure DevOps 工作项列表反序列化 json?

Azure devops Server 2019中的Analytics Widget-寻找Rest api和class libraby用于Analytics Widget

C# 使用 JsonPatchDocument 更新 Azure Devops 工作项父级

无法在 PowerShell 中使用 REST API 删除 DevOps 分支

无需用户代表从自定义 azure webapp api 调用 azure DevOps API