gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:55:20 24 4
gpt4 key购买 nike

我正在编写一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com