如何从发布任务修改 Azure DevOps 发布定义变量? [英] How to modify Azure DevOps release definition variable from a release task?
问题描述
从 AzureDevOps 发布任务获取密钥轮换以适用于 Azure 存储帐户的最简单方法是什么?目前的计划是在发布后重新生成旧密钥以使其失效,并拥有一个可以在下次部署时使用的新密钥.但要让它发挥作用,我似乎至少需要将要使用的密钥名称存储在发布变量中.
我查看了他的日志记录任务(
What is the easiest way to get key rotation to work for azure storage accounts from a AzureDevOps relase task? The current plan is to re-generate the old key after release to invalidate it, and have a fresh key that can be used on next deployment. But to get that to work it seems like I at least need to store the name of the key to use in a release variable.
I had a look at he logging tasks (https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md), but that only changes the value in the current release and does not modify the release definition.
You can use the REST API (Definitions - Update) to update the value of the release definition variable from a release task.
- Go to the
Agent Phase
and selectAllow Scripts to Access OAuth Token
. See Use the OAuth token to access the REST API - Grant
Project Collection Build Service (xxx)
account the edit release pipeline permission. (Select the release pipeline -->...
-->Security
-->Edit release definition
set toAllow
) - Add a PowerShell task in your release pipeline
Run inline script: (Update the value of variable
v1030
in below sample)$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 "=========================================================="
这篇关于如何从发布任务修改 Azure DevOps 发布定义变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!