如何通过Azure DevOps REST API获取授权使用环境的流水线列表
获取特定流水线被授权使用的Azure DevOps环境
要获取特定流水线被授权使用的环境,无法直接通过流水线定义的resources接口获取,需要结合环境列表API和环境权限API来实现,具体步骤如下:
1. 确认目标流水线的ID
如果已经知道流水线ID(即{id}),可直接进入下一步;若未知,可通过以下API获取项目内所有流水线:
GET https://dev.azure.com/{organization}/{project}/_apis/build/definitions?api-version=7.1-preview.7
2. 获取项目内所有环境列表
调用环境列表API,获取项目下所有环境的基本信息(包含环境ID):
GET https://dev.azure.com/{organization}/{project}/_apis/distributedtask/environments?api-version=7.1-preview.1
返回结果中每个环境对象的id字段即为环境唯一标识。
3. 逐个查询环境的权限分配
对每个环境,调用权限查询API,获取该环境的所有授权主体及权限:
GET https://dev.azure.com/{organization}/{project}/_apis/securityroles/scopes/distributedtask.environmentrole/{environmentId}/roleassignments?api-version=7.1-preview.1
替换{environmentId}为步骤2中获取的环境ID。
4. 筛选目标流水线的授权环境
在权限返回结果的value数组中,查找满足以下条件的条目:
principalType为groupprincipalName为Build Definition ({definitionId})(替换{definitionId}为目标流水线ID)
找到匹配的条目后,对应的环境就是该流水线被授权使用的环境。
内容的提问来源于stack exchange,提问作者Emmanuel
相关产品推荐
相关产品推荐

