有没有办法让此更新Build的Pipeline变量?

时间:2019-03-27 17:01:33

标签: azure-devops

我正在尝试更新特定的Build的Pipeline变量,以自动为每个生成的Build之间递增版本号变量。而且我看到了有关使用$(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脚本更新Build的Pipeline变量。因此,例如,在运行构建之前,我希望看到VersionNumber为2.0.0.7,然后在成功运行构建之后,我希望看到VersionNumber为2.0.0.8。

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

1 个答案:

答案 0 :(得分:0)

  

是否有办法更新Build的Pipeline变量?

简短的回答是。

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

但是,如果您仍然想在Web门户上更改“变量”中的值,则无法直接在UI上更改该值,我们需要使用REST API(Definitions - Update)来更新构建的值构建任务中的管道定义变量。

有一个非常相似的主题,您可以查看答案的详细信息:

How to modify Azure DevOps release definition variable from a release task?

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

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

希望这会有所帮助。