azure - 获取 Azure DevOps YAML 管道中所有提交的更改

标签 azure azure-devops yaml push commit

我正在编写一个 ADO YAML 管道,每当将文件推送到存储库时,它都会进行一些修改。到目前为止,一切都工作正常,除了我无法一次处理多个提交。 我需要获取自上次推送到推送(触发器)最初来自的分支以来所有已更改文件的列表。

Build.SourceVersion 仅返回最新提交,我找不到任何其他内置变量

没有可以与 REST API ( https://learn.microsoft.com/en-us/rest/api/azure/devops/git/commits/get-push-commits?view=azure-devops-rest-6.0 ) 一起使用的 PushId

在 Github 操作中,先前和最新的提交 ID 作为变量公开,然后我可以使用这些变量来获取自上次推送以来的更改,但我在 ADO 中找不到类似的内容

还有其他方法可以获取此信息吗?

最佳答案

感谢 qbik 的输入,我提出了以下 YAML 任务,该任务在推送之前和之后获取 GIT 提交 ID,并将这些值写入环境变量以在以下脚本中使用:

- task: PowerShell@2
  displayName: Get GIT Commit-IDs before and after Push
  inputs:
    targetType: 'inline'
    script: |
      # print Information stream
      $InformationPreference = "Continue"

      $headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
      $uri = "$env:SYSTEM_TEAMFOUNDATIONSERVERURI$env:SYSTEM_TEAMPROJECT/_apis/build/builds/$($env:BUILD_BUILDID)/changes?api-version=5.1"
      $changes = Invoke-RestMethod -Method Get -Headers $headers -Uri $uri -Verbose

      if ($changes.count -gt 0) {
          $commit_id_before = $changes.value[$changes.count - 1].id
          $commit_id_after = $changes.value[0].id

          Write-Information "Commit ID before push: $commit_id_before"
          Write-Information "Commit ID after push:  $commit_id_after"

          Write-Host "##vso[task.setvariable variable=GIT_EVENT_BEFORE]$commit_id_before"
          Write-Host "##vso[task.setvariable variable=GIT_EVENT_AFTER]$commit_id_after"
      }
      else {
        Write-Warning "No changes found in Build $buildId"
      }
    pwsh: true
  env:
    SYSTEM_ACCESSTOKEN: $(System.AccessToken)

关于azure - 获取 Azure DevOps YAML 管道中所有提交的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70893418/

相关文章:

ios - 如何在 ios 的 Azure AD 中获取已登录用户的电子邮件 ID

azure - 尝试通过 bicep 获取 Azure DNS 入站终结点的 IP 地址

azure - 需要在 azure 逻辑应用程序中使用表达式才能获取 JSON 元素

c# - 验证托管 TFS : TF30063: You are not authorized to access . visualstudio.com

azure - 如何替换VSTS CD中release中的json文件?

matlab - 在matlab中读取.yml文件

yaml - 运行命令,获取 GitHub 操作上一步的输出

azure - 选择长期存储/分析系统?

azure - ADB2C身份体验框架: access token use just after an authentification

python - 是否可以使用 PyYAML 读取内部用 "YAML front matter" block 编写的文本文件?