Azure devops 确定VSTS发布期间的上一次提交

Azure devops 确定VSTS发布期间的上一次提交,azure-devops,Azure Devops,在执行部署时,我希望根据自上一版本以来是否更改了某些文件路径来执行一些优化 有没有办法找出目标环境上以前的提交哈希是什么?我猜它需要上一版本->构建工件->提交,但我在第一步就被卡住了 为了澄清,我希望能够列出部署模式中显示的提交: 如果生成定义为多个分支生成 然后,您需要通过上一版本/构建获取最后一次提交的sha-1值,然后获取最后一次提交。 实现的步骤如下: 获取最新版本 使用: 您将获得某个发布定义的最后两个发布。对于这两个版本,一个是您正在部署的当前版本,另一个是最后一个版本 从上一版本

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

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

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

如果生成定义为多个分支生成 然后,您需要通过上一版本/构建获取最后一次提交的sha-1值,然后获取最后一次提交。 实现的步骤如下:

获取最新版本

使用:

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

从上一版本获取上一个buildId

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

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

使用获取上一个构建,您可以从响应中获取源版本last commit

如果生成定义为某个分支生成 然后,通过git命令可以更容易地获得最后一个commit 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回购URL,您需要在URL内处理凭证,如PAT,如:

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

如果生成工件不是发布的主要工件,则应在powershell脚本中使用变量$release.artifacts.{alias}.SourceBranchName,而不是$build.SourceBranchName

应取消选择PowerShell任务中的标准错误失败选项


您的发布定义是否处理发布的构建工件?对于生成发布的构建工件的构建定义,它是否总是为同一git repo构建?是的,构建工件是发布的工件依赖项。是的,构建总是使用相同的回购协议source@RichardSzalay我相信有一种休息方法可以调用。看看当你使用F12开发工具、Fiddler或其他工具时发出的HTTP请求。我现在不能检查,但我很确定我以前做过。这不是发布版本的SHA吗?我在为已经在环境中并且即将被替换的构建寻找SHA。它被记录在某个地方,作为显示两者之间差异的UI。假设提交A用于上一个构建和发布,提交B用于当前构建。该脚本将在当前发布期间获得上次构建/发布的提交A,并且该脚本不只是计算$release.Artifacts.SourceVersion的一种循环方式吗?很有趣。我会试一试,让你知道。谢谢Build.SourceBranchName是分支名称,始终相同。因此,使用HEAD~假设部署到环境中的commit-previous是紧挨着HEAD之前的commit,但不能保证之前的版本在这个环境中,更不用说之前的commit了。
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"