我正在尝试更新特定的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
答案 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
希望这会有所帮助。