如何获取Azure DevOps版本关联的提交记录(基于上一版本)
获取Azure DevOps发布版本的提交记录
方法一:通过Release Changes API获取跨版本提交
你提到的变更接口确实能返回两次发布间的所有提交,但需要先拿到当前流水线上一次成功发布的版本ID:
1. 拉取上一版本ID
在流水线的PowerShell或Bash任务中调用这个API:
GET $(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/release/releases?definitionId=$(Release.DefinitionId)&sourceBranch=$(Build.SourceBranch)&$top=2&queryOrder=descending&api-version=7.1-preview.8
参数说明:
definitionId:用内置变量$(Release.DefinitionId)指定当前发布流水线IDsourceBranch:可选,过滤同分支的发布,用$(Build.SourceBranch)$top=2:取最新的两个发布,第二个结果的id就是你要的previousReleaseId
2. 调用变更接口拿提交记录
用拿到的previousReleaseId调用:
GET $(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/release/releases/$(Release.ReleaseId)/changes?baseReleaseId={previousReleaseId}&api-version=7.1-preview.1
返回的changes数组里,changeType为commit的条目就是提交记录,包含哈希、提交信息、作者等内容。
方法二:直接从关联构建拉取提交(更简单)
如果你的发布是和构建流水线绑定的,直接调用构建的提交记录API就行,不用管上一版本:
GET $(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/build/builds/$(Build.BuildId)/changes?api-version=7.1-preview.2
这个接口返回的内容和发布阶段显示的提交列表完全一致,因为发布的变更本质来自关联的构建。
流水线实现提示
- 确保流水线服务账号有Release Read和Build Read权限
- 用Azure DevOps CLI能简化操作,比如一行命令拿上一版本ID:
az devops release list --project $(System.TeamProject) --definition-id $(Release.DefinitionId) --top 2 --query "[1].id" -o tsv
内容的提问来源于stack exchange,提问作者Jan_V
相关产品推荐
相关产品推荐

