You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在Azure DevOps变量存储上次构建后的Git提交标题列表?

解答

Azure DevOps没有预定义变量可以直接获取上次构建以来的完整提交列表——官方提供的预定义变量(比如Build.SourceVersionMessage)仅能获取单个提交的信息,无法覆盖你需要的提交范围。

如果想避免复杂编码,可参考以下两种可行方案:

方案1:利用Azure DevOps REST API

  1. 直接使用预定义变量$(Build.SourceVersion)获取当前构建的提交ID
  2. 调用构建列表API,获取上一次成功完成的构建的提交ID(需排除当前构建):
    GET https://dev.azure.com/{组织名}/{项目名}/_apis/build/builds?definitions={流水线ID}&statusFilter=completed&resultFilter=succeeded&$top=1&$orderBy=finishTime desc&minTime={当前构建开始时间}
    
    (注:可通过$(Build.StartTime)变量传递当前构建的开始时间,确保返回的是上一次构建)
  3. 调用提交列表API,传入两次构建的提交ID,获取中间的所有提交:
    GET https://dev.azure.com/{组织名}/{项目名}/_apis/git/repositories/{仓库ID}/commits?searchCriteria.fromCommitId={上一次提交ID}&searchCriteria.toCommitId={当前提交ID}
    
    在流水线任务中,可通过PowerShell/Bash直接发起请求,使用$(System.AccessToken)作为请求头的授权凭证,无需额外配置账号。

方案2:Git命令直接获取

如果你的流水线已经拉取了完整的Git仓库,可通过以下步骤获取提交列表:

  1. 使用Azure CLI获取上一次成功构建的提交ID(需提前在流水线中安装Azure CLI并完成授权):
    PREV_COMMIT=$(az pipelines build list --definition-id $(System.DefinitionId) --status completed --result succeeded --top 1 --query "[0].sourceVersion" -o tsv)
    
  2. 执行Git命令输出提交列表(可自定义格式,比如--oneline简化输出):
    git log --oneline $PREV_COMMIT..$(Build.SourceVersion)
    
    这种方式无需处理API逻辑,适合快速实现需求。

内容的提问来源于stack exchange,提问作者Michael Gaines

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 08:42:14