如何通过API获取各环境活跃版本所基于的分支名称?
获取发布流水线各环境活跃版本分支名的API方案
场景背景
我们为每个组件配置了独立的发布流水线,用于将构建产物部署至多个环境(每个环境对应流水线的一个阶段)。由于并非每次都会部署所有环境,各环境当前活跃版本对应的分支可能存在差异(例如DEV环境对应Release-002、SIT环境对应Release-001、TEST环境对应Release-010),需要通过API获取每个环境的活跃版本分支名称。
Azure DevOps 下的具体实现(主流流水线工具示例)
1. 获取目标流水线的所有环境ID
调用Environments - List接口,获取该流水线对应的所有环境信息及ID:
GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/environments?definitionId={releaseDefinitionId}&api-version=7.1-preview.1
参数说明:
{organization}:你的Azure DevOps组织名称{project}:所属项目名称{releaseDefinitionId}:发布流水线的定义ID(可从流水线页面URL中提取)
2. 获取单个环境的最新成功发布记录
针对每个环境ID,调用Releases - List接口筛选出该环境下最新的成功发布(即当前活跃版本):
GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?definitionId={releaseDefinitionId}&environmentId={environmentId}&status=succeeded&$top=1&api-version=7.1-preview.8
参数说明:
{environmentId}:步骤1中获取的目标环境IDstatus=succeeded:仅筛选已成功完成部署的发布记录$top=1:只返回最新的一条记录
3. 提取分支名称
在返回的JSON数据中,定位到artifacts数组下对应构建产物的sourceBranch字段,该字段值即为该环境活跃版本对应的分支名称。
其他流水线工具的参考方案
- Jenkins:通过Jenkins REST API(如
/job/{jobName}/lastSuccessfulBuild/api/json)获取最新成功构建的信息,结合发布插件的环境关联数据提取分支名;部分第三方插件也提供直接的环境分支查询接口。 - GitLab CI/CD:调用
GET /projects/:id/releases接口,通过环境标签(environment字段)筛选对应环境的最新发布,从发布关联的构建信息中提取分支名称。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

