Set Azure devops Release pipeline variable using REST API

后端 未结 1 1867
面向向阳花
面向向阳花 2020-12-22 02:15

I am able to update the variable in the build pipeline using the below json body

        $body = \'
{ 
    \"definition\": {
        \"id\": 25
    },
    \"         


        
相关标签:
1条回答
  • 2020-12-22 02:38

    Set Azure devops Release pipeline variable using REST API

    We could use the REST API Definitions - Get to get all the info about this definition in the body, then we could update the body and use the (Definitions - Update) to update the value of the release definition variable from a release pipeline:

    PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions/{definitionId}?api-version=5.0
    

    Following is my test inline powershell scripts:

    $url = "https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions/{definitionId}?api-version=5.1"
    
    Write-Host "URL: $url"
    $pipeline = Invoke-RestMethod -Uri $url -Method Get -Headers @{
        Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
    }
    Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"
    
    # Update an existing variable named TestVar to its new value 2
    $pipeline.variables.TestVar.value = "789"
    
    ####****************** 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 'TestVar' is updated to" $updatedef.variables.TestVar.value
    

    As test result, the variable TestVar updated to 789:

    Update:

    But I want to achieve it without updating\changing the definition

    The answer is yes. You could use the Releases - Create with request body:

    {
      "definitionId": Id,
      "environments": [
        {
          "variables": {
            "TestVar": {
              "value": "xxxx"
            },
            "TestVar2": {
              "value": "xxxx"
            }
          },
    
        }
       ],
    }
    

    For more information refer the post here.

    Hope this helps.

    0 讨论(0)
提交回复
热议问题