【问题标题】:Azure DevOps REST API - Get agent pools for jobs?Azure DevOps REST API - 获取作业的代理池?
【发布时间】:2021-07-07 17:34:52
【问题描述】:

我正在使用Azure DevOps REST API 检索管道运行(又名“构建”)。构建响应有一堆好的数据,但它报告的 pool 似乎只适用于整个管道定义了顶级池的情况。

例如,我有一个运行多个并行作业的管道,每个作业都位于不同的自托管代理池中。但是,当我使用 REST API 检索此管道的构建时,唯一可用的数据是 管道的 池,这是 Microsoft 托管构建时获得的正常 Hosted Ubuntu 1604 响应 - 没有提及完成所有工作的任何自托管代理池。

我尝试深入了解不同的部分(包括阶段和任务查询)。任务级别最终会显示所使用代理的名称,但它只是一个字符串,因此很难推断所使用的代理池,除非您碰巧以特定方式命名您的代理。 p>

是否有任何方法可以使用 REST API 深入了解作为管道一部分运行的各个“作业”并查看它们在哪些代理池上运行?

【问题讨论】:

    标签: azure rest azure-devops


    【解决方案1】:

    Build 响应包含一个链接时间线(在Links 字段下)。

    你可以这样形成:https://dev.azure.com/<org>/<project>/_apis/build/builds/<buildId>/Timeline

    Json 响应包含每个作业/任务的有用信息,包括 queueId

    【讨论】:

    • 啊,感谢有关 queueId 的说明!我没有注意到这一点。不过,在我的特定情况下,该 queueId 没有用,因为该 queueId 是“管道”(Microsoft 托管代理)的 queueId,而不是实际运行我的作业的任何一个自托管代理队列的 queueId。
    • 我有一个多阶段管道,其中一个阶段使用自托管代理,我能够看到两者的 queueId(其中一个任务有 MS 托管代理 queueId,另一个任务有我的自托管代理 queueId)
    • 我打折 queueId 太快了!事实证明,从您的“poolId”到项目的每个链接都是一个单独的“queueId”,因此使用时间线 queueId,您只需要返回链接的 projectId,您就可以组合作业使用的所有代理池的列表.非常感谢。
    【解决方案2】:

    目前,我们的 Rest API 无法帮助我们深入了解作为管道一部分运行的各个“作业”,并查看它们在哪些代理池上运行。此 Rest Api 用于查找有关您的管道的默认设置。 作为解决方法,我们可以使用 api:Builds - Get Build Log,并找到代理的名称,如下所示:

    【讨论】:

      猜你喜欢
      • 2021-05-13
      • 2019-06-09
      • 1970-01-01
      • 2020-10-22
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 2020-09-04
      相关资源
      最近更新 更多