在Azure DevOps中,有什么方法可以创建到最新生成工件的永久链接?

时间:2019-12-03 14:43:15

标签: azure-devops azure-pipelines

因此,每当我将更改推送或合并到master分支中时,我就设置了ADO来构建我的解决方案,并且它会生成工件,但是该工件的路径随每次构建而变化。有什么方法可以创建一个始终指向最新构建工件的永久链接,因此我可以与其他人共享该永久链接,而无需让他们单击构建列表中的一堆链接,或者每次有新链接时都给他们一个新链接。新建?

为了阐明这一点:假设我有1号楼,URL是http://azure.com/build/1/artifact或类似名称。现在,我进行一些更改,并在http://azure.com/build/2/artifact获得了版本2。因此,我必须在要链接到版本1的所有地方进行更新,以共享应用程序链接到版本2的应用程序。我正在寻找某种http://azure.com/build/latest/artifact,它总是指向最新版本。

2 个答案:

答案 0 :(得分:1)

像这样?

https://dev.azure.com/ {orgname} / {project} / _ apis / build / latest / {pipeline-name}?api-version = 5.1-preview.1

https://docs.microsoft.com/en-us/rest/api/azure/devops/build/latest/get?view=azure-devops-rest-5.1

这将为您获取最新的版本ID

然后https://docs.microsoft.com/en-us/rest/api/azure/devops/build/artifacts/get%20artifact?view=azure-devops-rest-5.1

使用该ID,您可以获取工件。

答案 1 :(得分:1)

  

在Azure DevOps中,有什么方法可以创建到最新生成工件的永久链接?

恐怕没有直接创建与最新构建工件的永久链接的直接方法。

那是因为最新的构建工件的链接与构建ID 有关,例如:

https://dev.azure.com/<OrganizationName>/<ProjectID>/_apis/build/builds/2037/artifacts?artifactName=Test&api-version=5.0&%24format=zip

因此,最新的构建工件的链接因每个构建ID而异。

作为解决方法,我们可以使用REST API Latest - Get来获取定义的最新版本:

GET https://dev.azure.com/{organization}/{project}/_apis/build/latest/{definition}?api-version=5.1-preview.1

要调用上述API的powershell脚本:

$url = "https://dev.azure.com/{organization}/{project}/_apis/build/latest/51?&api-version=5.0-preview.1"
$buildPipeline= Invoke-RestMethod -Uri $url -Headers @{   
 Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
} -Method Get

$BuildId= $buildPipeline.id

Write-Host This is start time: $BuildId

然后我们可以获得定义的最新版本:

enter image description here

接下来,我们需要将此最新的内部版本ID传输到下一个REST API Artifacts - Get Artifact

Write-Host ("##vso[task.setvariable variable=LatestBuildId]$BuildId")

GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/artifacts?artifactName={artifactName}&api-version=5.1

powershell脚本:

$url = "https://dev.azure.com/{organization}/{project}/_apis/build/builds/$(LatestBuildId)/artifacts?artifactName=test&api-version=5.0"
$buildPipeline= Invoke-RestMethod -Uri $url -Headers @{   
 Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
} -Method Get

$ArtifactDownloadURL= $buildPipeline.resource.downloadUrl


Write-Host This is start time: $ArtifactDownloadURL

结果:

enter image description here

现在,我们可以获取最新的构建工件的链接。

希望这会有所帮助。