如何获取构建关联的变更或提交列表 能否使用Build.Repository等预定义变量查询
构建关联变更/提交列表获取方案
预定义变量Build.Repository的作用说明
你无法直接通过Build.Repository前缀的预定义变量获取完整的变更或提交列表,这类变量仅用于存储仓库基础元信息,常见取值包括:
Build.Repository.Id:仓库唯一标识Build.Repository.Name:仓库名称Build.Repository.Provider:仓库托管类型(Git、TFVC等)Build.Repository.Uri:仓库访问地址
所有该前缀的变量都不包含本次构建对应的提交记录、文件变更内容。
获取构建关联变更/提交列表的可行方法
1. 单提交场景直接取基础变量
如果构建是单提交触发的,可直接用以下预定义变量获取当前提交的基础信息:
Build.SourceVersion:本次构建对应的完整提交SHABuild.SourceVersionMessage:本次提交的备注内容Build.SourceBranch:提交所属的完整分支路径
2. 多提交场景用版本控制命令拉取
如果是批量提交触发的构建、PR合并构建这类涉及多个提交的场景,可配合版本控制工具命令行拉取变更:
以下为Git仓库的操作示例,操作前需要先把流水线的代码克隆深度调整为0(默认通常为浅克隆仅拉取最新1次提交,无法查询历史差异)
要获取两次构建之间的所有提交列表,执行命令:git log --pretty=format:"%h %s %an" [上次成功构建的提交SHA]..[当前构建提交SHA]
其中上次成功构建的提交SHA可以通过流水线内置的Build.LastGoodBuildSourceVersion变量获取,也可以自行存储历史构建的Build.SourceVersion值对比。
要获取具体的变更文件列表,执行命令:git diff --name-only [上次成功构建的提交SHA]..[当前构建提交SHA]
3. 调用CI/CD平台接口获取
所有主流CI/CD平台都提供了构建详情查询接口,你可以在流水线中使用合法身份调用对应接口,直接获取平台已经解析完成的本次构建关联的所有提交、变更文件列表,无需自行处理版本控制命令的适配逻辑。
内容的提问来源于stack exchange,提问作者Ivan Ishchenko
相关产品推荐
相关产品推荐

