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

如何在VSTS发布过程中获取上一次提交哈希值?

嘿,我刚好对这个场景有经验,给你几个可行的方案来获取目标环境上一次发布的提交哈希,以及列出部署弹窗里的提交记录:

方法一:借助CI/CD平台的内置能力或API查询

不同的CI/CD工具都有对应的方式获取历史部署的提交信息,举几个主流平台的例子:

  • GitHub Actions:可以调用GitHub的REST API查询目标环境的最新部署记录,接口格式是GET /repos/{owner}/{repo}/deployments,指定environment参数过滤后,取返回结果的第一条,里面的sha字段就是上一次发布的提交哈希。如果用Vercel、Netlify这类托管部署工具,它们也提供了内置API来查询部署历史,能直接拿到上一次的提交信息。
  • GitLab CI:可以通过GitLab的APIGET /projects/{project_id}/deployments获取环境的部署历史,最新一条的sha就是目标哈希。另外,构建阶段的CI_COMMIT_SHA变量可以直接写入工件元数据,部署时从历史工件里读取也很方便。
  • Azure DevOps:调用GET https://dev.azure.com/{organization}/{project}/_apis/release/releases?definitionId={definitionId}&environmentName={environmentName}&$top=1接口,返回结果里的artifacts[0].version通常包含提交哈希。

方法二:通过构建工件的元数据留存

正如你推测的路径,我们可以在构建阶段就把提交哈希写入一个元数据文件(比如deploy-info.json),和业务工件一起上传存储。部署时,先从目标环境的上一次部署工件中读取这个文件,就能直接拿到上一次的提交哈希。

  • 很多平台支持工件附带元数据,比如GitLab的artifacts:reports功能,可以专门存储这类部署相关的信息,部署阶段直接调取即可。
  • 如果是自定义部署脚本,也可以把这个元数据文件存在目标环境的持久化存储(比如服务器的特定目录、配置中心),每次部署成功后更新,下次部署直接读取。

方法三:获取部署弹窗里的提交记录列表

要拿到两次发布之间的所有提交(就是部署弹窗里显示的那些),可以用Git命令直接对比两次提交的差异:

git log --oneline <上一次提交哈希>..<当前提交哈希>

这条命令会以简洁格式列出两次提交之间的所有记录,和你在部署弹窗里看到的内容一致。如果是云原生部署场景,有些工具会把发布历史存在K8s的ConfigMap或Secret里,用kubectl get命令也能读取到这些提交信息。

小提醒

如果是自定义部署流程,最好把上一次的提交哈希做持久化存储(比如数据库、环境变量),每次部署成功后更新这个值,这样下次部署时能直接读取,不用每次调用API查询,效率更高。

内容的提问来源于stack exchange,提问作者Richard Szalay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:38:54