检查工作人员是自托管的还是由Azure经营的工作人员

时间:2019-07-03 15:07:20

标签: azure-devops azure-pipelines

对于我们的产品,有必要通过访问辅助计算机来了解是否有人可以破坏Azure Pipelines中的版本。

因此,我们想知道它是否是由用户自行托管的代理,还是由Azure Pipelines提供的代理。后者是值得信赖的,前者则不是。

有人知道如何通过构建成功的Web挂钩或REST API获取此信息(“由用户自行托管”或“由Azure管道提供”)吗?

2 个答案:

答案 0 :(得分:1)

通过直接单击构建记录,可以查看所使用的代理是托管的还是私有的。 enter image description here 您还可以将Powershell任务添加到构建管道的代理作业中,并添加以下脚本。

Write-Host agent id : $(agent.id) , agent name : $(agent.name)

由于agent.name和agent.id是环境变量,因此可以直接获取它们,然后将其输出到Power Shell中。通过名称,您可以判断所使用的代理是托管代理还是私有代理。

enter image description here

答案 1 :(得分:1)

Web挂钩获得了诸如“ Builds-Get” Rest API之类的信息,其中包含代理程序池名称以及属性isHosted

queue: {
           "id": 10
           "name": "Hosted VS2017"
           "pool": {
                       "id": 4,
                       "name": "Hosted VS2017",
                       "isHosted": true
                   }
       }

因此,如果isHostedtrue,则工作计算机是“由Azure Pipelines提供的”,而如果我是false,则工作计算机是“由用户自我托管的”。

您还可以假设,如果池名称包含单词“ Hosted”,则为Microsoft Hosted Agent,因为无法删除这些池。