azure-devops - 如何从发布任务修改 Azure DevOps 发布定义变量?
问题描述
从 AzureDevOps 发布任务让密钥轮换以适用于 azure 存储帐户的最简单方法是什么?目前的计划是在发布后重新生成旧密钥以使其失效,并拥有一个可用于下一次部署的新密钥。但要让它发挥作用,似乎我至少需要将要在发布变量中使用的密钥的名称存储起来。
我看了一下他的日志记录任务(https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md),但这只会改变当前版本中的值并且确实不修改发布定义。
解决方案
您可以使用 REST API ( Definitions - Update ) 从发布任务更新发布定义变量的值。
- 转到
Agent Phase
并选择Allow Scripts to Access OAuth Token
。请参阅使用 OAuth 令牌访问 REST API - 授予
Project Collection Build Service (xxx)
帐户编辑发布管道权限。(选择发布管道 -->...
-->Security
-->Edit release definition
设置为Allow
) - 在发布管道中添加 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 "=========================================================="
推荐阅读
- azure-service-fabric - 更改了服务结构集合名称,现在出现关于两阶段升级的错误
- r - R(dplyr)中的条件最大值?
- c - 同步读写
- powershell - Power shell 循环发送电子邮件并将输出写入文件
- sql-server - DataAdd 日期部分 varchar
- jquery - 多个下拉ajax的单个onchange
- html - 样式化 HTML/CSS 以实现给定的效果
- azure - Azure 中的 EUAP 区域是什么?
- r - grep() 在数据框中具有多个列名
- java - context.getBean 抛出 NoSuchBeanDefinitionException