如何通过发布任务修改Azure DevOps发布定义变量?

Odd*_*eif 1 azure-storage azure-devops azure-pipelines-release-pipeline

从AzureDevOps释放任务获取密钥轮换以用于Azure存储帐户的最简单方法是什么?当前的计划是在发行后重新生成旧密钥以使其失效,并具有可在下一次部署中使用的新密钥。但是要使其正常工作,看来我至少需要存储要在发布变量中使用的键的名称。

我看了一下他记录任务的情况(https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md),但这仅更改了当前版本中的值并且确实不修改发布定义。

And*_*SFT 7

您可以使用REST API(定义-更新)来更新发布任务中的发布定义变量的值。

  1. 转到Agent Phase并选择Allow Scripts to Access OAuth Token。请参阅使用OAuth令牌访问REST API
  2. 授予Project Collection Build Service (xxx)帐户编辑发布管道权限。(选择发布管道-> ...-> Security-> Edit release definition设置为Allow
  3. 在发布管道中添加PowerShell任务
  4. 运行内联脚本:(更新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 "=========================================================="
    
    Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 当我尝试这种方法时,我收到错误“##[错误]在此对象上找不到属性“值”。请验证该属性是否存在并且可以设置。”。我希望我们可以使用这个脚本设置预定义的变量。我在上面的脚本中使用了相同的变量“v1030”。不知道我错过了什么......! (2认同)