有没有办法更新构建的管道变量?



我正在尝试更新我的特定构建的管道变量,以自动递增生成的每个构建之间的版本号变量。 我看到了使用 $(Rev:.r( 的文档,但这不是我想要的。

请参阅下面的代码,我尝试使用##vso[task.setvariable variable=myVar;]$myNewVar方法,但我认为这只存在于构建中,并没有像我预期的那样实际更新构建的管道变量。

$vstsCurrentVersionNumber = $env:VersionNumber
$currentVersionNumber = $vstsCurrentVersionNumber.Split(".")
$revisionNumber = $currentVersionNumber[3]
$newRevisionNumber = [int]$revisionNumber + 1
$newVersionNumber = $currentVersionNumber[0] + "." + 
$currentVersionNumber[1] + "." + $currentVersionNumber[2] + "." + 
$newRevisionNumber
$env:VersionNumber = $newVersionNumber
Write-Host "##vso[task.setvariable variable=VersionNumber;]$newVersionNumber"
Write-Output "Current Version Number is '$vstsCurrentVersionNumber' with 
Revision Number '$revisionNumber'"
Write-Output "Next Version Number will be '$newVersionNumber' with 
Revision Number '$newRevisionNumber'"
Write-Output "Current VSTS Version Number: '$vstsCurrentVersionNumber'"
Write-Output "New VSTS Version Number: '$env:VersionNumber'"

我希望构建的管道变量能够根据我编写的Powershell脚本进行更新。 因此,例如,在运行构建之前,我希望看到版本号为 2.0.0.7,然后在成功运行构建后,我希望看到版本号为 2.0.0.8。

但是,当我运行此脚本时,构建的管道变量仍然是 2.0.0.7

有没有办法更新构建的管道变量?

简短的回答是肯定的。

当我们使用 powershell 更改变量VersionNumber的值时,我们可以在构建中使用此新值。

但是,如果仍想更改 Web 门户上的"变量"中的值,则无法直接更改 UI 上的值,需要使用 REST API(定义 - 更新(从生成任务更新生成管道定义变量的值。

有一个非常相似的线程,您可以查看答案以获取详细信息:

如何从发布任务修改 Azure DevOps 发布定义变量?

注意:将 API 更改为构建定义:

PUT https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=5.0

希望这有帮助。

最新更新