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

Azure devops 如何从发布任务修改Azure DevOps发布定义变量?,azure-devops,azure-storage,azure-pipelines-release-pipeline,Azure Devops,Azure Storage,Azure Pipelines Release Pipeline,从AzureDevOps relase任务中获得azure存储帐户密钥轮换的最简单方法是什么?当前计划是在发布后重新生成旧密钥以使其无效,并拥有一个新密钥,可用于下一次部署。但要使其正常工作,我至少需要将要使用的密钥的名称存储在发布变量中 我查看了日志记录任务,但这只会更改当前版本中的值,而不会修改版本定义。您可以使用REST API从版本任务更新版本定义变量的值 转到代理阶段并选择允许脚本访问OAuth令牌。看见 授予项目集合生成服务xxx帐户编辑权限 释放管道权限。选择发布管道->…->安全

从AzureDevOps relase任务中获得azure存储帐户密钥轮换的最简单方法是什么?当前计划是在发布后重新生成旧密钥以使其无效,并拥有一个新密钥,可用于下一次部署。但要使其正常工作,我至少需要将要使用的密钥的名称存储在发布变量中

我查看了日志记录任务,但这只会更改当前版本中的值,而不会修改版本定义。

您可以使用REST API从版本任务更新版本定义变量的值

转到代理阶段并选择允许脚本访问OAuth令牌。看见 授予项目集合生成服务xxx帐户编辑权限 释放管道权限。选择发布管道->…->安全->编辑发布定义集以允许 在发布管道中添加PowerShell任务 运行内联脚本:更新以下示例中变量v1030的值

$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 v1030 to its new value 1035
$pipeline.variables.v1030.value = "1035"

####****************** 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 'v1030' is updated to" $updatedef.variables.v1030.value
write-host "=========================================================="

它对我所有的测试版本都非常有效,但是生产版本在执行PUT请求以更新发布定义时会抛出400个错误请求。关于这里可能有什么问题,或者如何找出问题所在,有什么建议吗?对于这个发布定义,即使发布原始响应而不修改它也会失败…@Andy Li MSFT,当所有任务都在该阶段完成时,上述解决方案会产生效果。我们是否有其他方法在同一阶段将值从一个代理传递到另一个代理?我收到错误[error]此对象上找不到属性“value”。当我尝试此方法时,请验证该属性是否存在并且可以设置。我希望我们可以使用这个脚本设置预定义的变量。我在上面的脚本中使用了相同的变量“v1030”。不知道我错过了什么。。。!工程,但仅在发布管道中的所有阶段完成时生效。管道中的predeployment脚本拾取定义变量的旧值。