从部署作业中检索发布信息

Retrieve Release information from a deployment job

我是 运行 将应用程序部署到云端的 Azure 管道。 在部署之前,我想检查云上部署的当前版本是否与用户要部署的版本不同。 我正在研究获取之前部署的构建版本的名称。 我正在使用 Azure devops git 作为我的存储库。

有什么方法可以使用 Azure Devops Rest 获取所需的信息API?

提前致谢。

I was looking into getting release name of the build which was deployed before. I am using Azure devops git as my repository.

我们可以使用带有参数 $top 的 REST API Releases - List 来获取最新的发布管道:

GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?definitionId={definitionId}&`$top={$top}&api-version=6.0

我们可以获得最新的发布流水线ID:

$connectionToken="Your PAT Here"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))

$ReleasePipelineUrl = "https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?definitionId={definitionId}&`$top={$top}&api-version=6.0" 

Write-Host "URL: $ReleasePipelineUrl"

$ReleasePipelineInfo = (Invoke-RestMethod -Uri $ReleasePipelineUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}) 

$LatestReleaseId = $ReleasePipelineInfo.value.id | ConvertTo-Json -Depth 100

Write-Host "LatestReleaseId = $LatestReleaseId"

获得LatestReleaseId后,我们可以使用REST API Releases - Get Release:

GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=6.0

获取详细信息,例如 artifact name 关于最新管道的信息:

$connectionToken="Your PAT Here"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))


$ReleaseArtifactUrl = "https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/$($LatestReleaseId)?api-version=5.1" 

Write-Host "URL: $ReleaseArtifactUrl"

$ReleaseArtifactInfo = (Invoke-RestMethod -Uri $ReleaseArtifactUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}) 


$ReleaseArtifactName = $ReleaseArtifactInfo.artifacts.definitionReference.version.name | ConvertTo-Json -Depth 100

Write-Host "ReleaseArtifactName = $ReleaseArtifactName"

现在,我们得到了最近一次部署的版本名称。

为了解决您的问题,我们可以在您的 构建管道 中添加一个 powershell 任务,以在 REST API 之上调用以检查版本名称。

并添加另一个任务来比较发布名称是否与此构建生成的工件名称相同,我们可以使用 REST API 来获取它 Artifacts - Get Artifact. If they are different, call the REST API to trigger the release pipeline。如果相同,则什么也不做。

因此,我们可以通过生成的各个神器的名字或者版本来判断是否有更新,但是直接比较版本好像比较难做的应用程序。除非我们在构建我们的管道时丢弃有关应用程序的这些信息,然后使用 REST API 来获取它,例如,将其存储在文件中。无论如何,这些方法需要对 REST 有一定的了解API,希望对您有所帮助。