You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一次Pipeline运行中覆盖VERSIONNEW变量的值?

问题描述

在Pipeline的第一步中将新值存入VERSIONNEW变量,该变量在新运行中已更新为1039,但在同一次运行里VERSIONNEW仍保留旧值1035。请问是否有办法在同一次运行中覆盖该变量的值?

已尝试的代码
$url =     "$($env:SYSTEM_TEAMFOUNDATIONSERVERURI)$env:SYSTEM_TEAMPROJECTID/_apis/Release/definitions/$($env:RELEASE_DEFINITIONID)?api-version=5.0-preview.3"
Write-Host "URL: $url"
$pipeline = Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"

# Update an existing variable named VERSIONNEW to its new value 1039
$pipeline.variables.VERSIONNEW.value = "1039"

####****************** update the modified object **************************
$json = @($pipeline) | ConvertTo-Json -Depth 99


$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 'VERSIONNEW' is updated to" $updatedef.variables.VERSIONNEW.value
write-host "=========================================================="
解决方案

你当前通过API修改的是发布定义中的变量值,这个修改只会作用于后续启动的Pipeline运行。当前运行的变量在启动时就已经加载到运行上下文里,所以不会自动同步定义里的更新。要在同一次运行中覆盖变量值,分两种场景处理:

1. 让后续步骤使用新值

如果需要让当前运行的后续步骤拿到更新后的VERSIONNEW值,可以在修改完定义变量后,添加Azure DevOps的变量设置命令:

# 在当前运行的上下文中设置变量,后续步骤可用
Write-Host "##vso[task.setvariable variable=VERSIONNEW;]1039"

这个命令只会修改当前运行的变量上下文,不会影响发布定义,搭配你原有的API修改代码,就能同时实现“更新定义变量”和“当前运行后续步骤用新值”的需求。

2. 同一脚本内立即使用新值

如果只是在当前执行的这个PowerShell脚本里需要立即使用新值,直接在脚本内重新赋值即可:

$VERSIONNEW = "1039"
# 后续脚本代码里就能直接用这个新值

内容的提问来源于stack exchange,提问作者misolo89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 00:48:20