问题:有什么方法可以在azure-devops的构建管道中定义自定义变量,然后可以以任何方式在发布管道中使用该自定义变量?
场景:我们不使用变量组,因为我们需要在构建管道中动态设置变量,然后在发布管道中使用它-它不是静态的超级全局变量。
在发布变量和构建变量处检查了文档,但是找不到任何帮助信息或提示,这是可能的。
我尝试了什么
variable
in variables
,并使用$(name)
或检查它是否在in中尝试在发布管道中访问它env
。其他-动机这背后的动机是
VERSION
(实际上,在此期间我们会修补补丁)VERSION
标记添加为标签,然后使用此版本打包/发布工件如何在发布管道中使用构建管道中的自定义变量
您可以尝试使用REST API发布定义-更新来更新发布管道中的默认变量,以使用在构建管道中定义的值。
PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=5.1
细节:
在构建管道中定义一个自定义变量,例如TestValue
,值是123
:
还要在Release管道中使用默认值定义相同的自定义变量123
:
然后添加一个内联powershell脚本来调用REST APIDefinitions - Update
以更新发布管道中的默认值:
$url = "https://vsrm.dev.azure.com/<OrganizationName>/<ProjectName>/_apis/release/definitions/<DefinitionId>?api-version=5.1"
Write-Host "URL: $url"
$pipeline = Invoke-RestMethod -Uri $url -Method Get -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"
# Update an existing variable named TestValue to its new value 987
$pipeline.variables.TestValue.value = "$(TestValue)"
####****************** update the modified object **************************
$json = @($pipeline) | ConvertTo-Json -Depth 99
Write-Host "URL: $json "
$updatedef = Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
write-host "=========================================================="
Write-host "The value of Varialbe 'TestValue' is updated to" $updatedef.variables.TestValue.value
在这种情况下,我们可以在对构建管道进行排队时动态设置变量,并且该值将覆盖发布管道中的默认值,以便我们可以使用它来发布管道。
希望这可以帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句