在VSTS版本期间确定先前的提交

时间:2018-05-25 01:57:05

标签: azure-devops

执行部署时,我希望执行一些优化,具体取决于自上一版本以来某些文件路径是否已更改。

有没有办法找出目标环境中先前的提交哈希是什么?我猜它需要去#34;之前的版本" - > "构建神器" - > "承诺",但我坚持第一步。

为了澄清,我希望能够列出" Deploy"中显示的提交。模态:

enter image description here

1 个答案:

答案 0 :(得分:1)

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

然后,您需要获取先前版本/构建的最后一次提交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获取最后一次构建,您可以从响应中获取源版本(上次提交)。

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

    然后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中包含procider凭证(例如PAT),如:

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

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

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

      enter image description here