首页 > 解决方案 > 确定 VSTS 发布期间的先前提交

问题描述

在执行部署时,我希望根据某些文件路径自上一版本以来是否已更改来执行一些优化。

有没有办法找出目标环境上以前的提交哈希是什么?我猜它需要去“以前的版本”->“构建工件”->“提交”,但我被困在第一步。

为了澄清,我希望能够列出“部署”模式中显示的提交:

在此处输入图像描述

标签: azure-devops

解决方案


如果构建定义为多个分支构建

然后你需要通过之前的发布/构建获取最后一次提交的 sha-1 值,然后获取最后一次提交。实现步骤如下:

  1. 获取最新版本

    使用REST API

    GET https://{account}.vsrm.visualstudio.com/{project}/_apis/release/releases?$top=2&definitionId={id}api-version=4.1-preview.6
    

    您将获得特定版本定义的最后两个版本。对于这两个版本,一个是您正在部署的当前版本,另一个是最后一个版本。

  2. 从上一个版本获取最后一个 buildId

    第一步,您可以从参数中获取最后的发布日志logsContainerUrl。您可以下载最新的发布日志以压缩和解压缩日志。然后您可以buildId从下载工件步骤日志中获取。

  3. 从 buildId 获取最后一次提交 sha-1

    使用REST API获取最后一次构建,您可以从响应中获取源版本(最后一次提交)。

如果构建定义为某个分支构建

然后通过 git 命令可以更轻松地获得最后一次提交的 sha-1 值。

您可以使用带有以下脚本的 PowerShell 任务:

git clone <URL for git repo> repofolder
cd repofolder
git checkout $(Build.SourceBranchName)
$lastcommit=$(git rev-parse HEAD~)
echo "last commit sha-1 value is $lastcommit"

笔记:

  • 对于 git repo URL,您需要在 URL 中提供凭证(例如 PAT),例如:

    https://Personal%20Access%20Token:PAT@account.visualstudio.com/project/_git/repo

  • 如果构建工件不是用于发布的主要工件,则应使用该变量$(Release.Artifacts.{alias}.SourceBranchName)而不是$(Build.SourceBranchName)在 powershell 脚本中。

  • 应取消选择 PowerShell 任务中的Fail on Standard Error选项。

    在此处输入图像描述


推荐阅读