从AzureDevOps释放任务使密钥轮换用于Azure存储帐户的最简单方法是什么?当前的计划是在发行后重新生成旧密钥以使其失效,并具有可在下一次部署中使用的新密钥。但是要使其正常工作,看来我至少需要存储要在发布变量中使用的键的名称。
我看过他记录任务(https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md)的情况,但这仅更改当前发行版中的值,而不会修改发行版定义。
答案 0 :(得分:2)
您可以使用REST API(Definitions - Update)从发布任务更新发布定义变量的值。
Agent Phase
并选择Allow Scripts to Access OAuth Token
。参见Use the OAuth token to access the REST API Project Collection Build Service (xxx)
帐户的修改
释放管道许可。 (选择发布管道-> ...
-> Security
-> Edit release definition
设置为Allow
)运行内联脚本:(更新以下示例中的变量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 "=========================================================="
答案 1 :(得分:1)
这是一个更简洁、更好的解决方案,它还允许同时触发多个构建。 https://tsuyoshiushio.medium.com/how-to-pass-variables-with-pipeline-trigger-in-azure-pipeline-5771c5f18f91
本质上,您的触发构建会产生工件,您的触发构建会读取这些工件并将其转换为变量。
仍然不是很好,但总比没有好,而且比 REST 调用设置静态全局变量组要好。