在 Azure DevOps 中工作时,特别是在发布管道中,您会在舞台上看到一个漂亮的窗口,显示此特定版本中的提交。
我想在我的管道中使用此信息,这样我就可以记录进入特定版本的提交并将它们发布到不同的位置。
有
BUILD_SOURCEVERSION
变量可用,但这是来自最新提交的哈希值。
我尝试使用 Azure DevOps REST API 并对
https://vsrm.{{instance}}/{{teamproject}}/_apis/release/releases/{{releaseId}}?api-version=4.1-preview.6
执行了 GET,但我认为其中没有任何我可以使用的信息。有可以调用的更改端点
https://vsrm.{{instance}}/{{teamproject}}//_apis/Release/releases/{{releaseId}}/changes?baseReleaseId={{previousReleaseId}
。这个效果很好,但我仍然需要 previousReleaseId
,更具体地说是舞台运行的最后一个版本 ID。
有人知道如何获取版本的提交列表吗?
您可以使用rest api Releases - List(带有release
defintionid
)来获取目标版本中的上一个版本ID。
GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?definitionId={definitionId}&api-version=7.1-preview.8
PowerShell 脚本示例如下:
Param(
[string]$orgnurl = "https://vsrm.dev.azure.com/ORGNAME",
[string]$projectName = "PROJECTNAME",
[string]$DefinitionId = "1", #Release definition ID
[string]$user = "",
[string]$token = "PAT"
)
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
# to get the previous release id:
$getreleaseuri = "$orgnurl/$projectName/_apis/release/releases?definitionId=$DefinitionId" + "&api-version=7.1-preview.8"
$releases = Invoke-RestMethod -Uri $getreleaseuri -Method GET -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$currentreleaseid = $releases.value[0].id
$previousreleaseid = $releases.value[1].id
Write-Host $previousreleaseid $currentreleaseid # check previous release id and current release id
# get changes assosiated with the current release
$uri = "$orgnurl/$projectName/_apis/release/releases/$currentreleaseid/changes?baseReleaseId=3"
Write-Host $uri # check uri to get the changes
$commits = Invoke-RestMethod -Uri $uri -Method GET -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
foreach ($commit in $commits.value.id) {
Write-Host $commit
}