Azure devops Azure DevOps自动将多个版本更新为最新发布的任务组版本

Azure devops Azure DevOps自动将多个版本更新为最新发布的任务组版本,azure-devops,Azure Devops,使用Azure Devops更新任务组的推荐方法是先创建草稿,然后在几个版本上进行测试。接下来,通过发布任务组,将创建具有最新更改的新版本。 以下是文件: 由于我有100多个使用同一任务组的发布管道,我想知道是否有办法将所有发布管道自动更新为任务组的最新发布版本。目前,我需要通过选择任务组的最新版本手动更新每个版本 发布新版本时是否有自动执行此操作的方法?您可能需要使用rest api在发布管道中更新任务组版本。请参阅以下步骤: 1、调用api获取所有版本的id GEThttps://vsrm

使用Azure Devops更新任务组的推荐方法是先创建草稿,然后在几个版本上进行测试。接下来,通过发布任务组,将创建具有最新更改的新版本。 以下是文件:

由于我有100多个使用同一任务组的发布管道,我想知道是否有办法将所有发布管道自动更新为任务组的最新发布版本。目前,我需要通过选择任务组的最新版本手动更新每个版本


发布新版本时是否有自动执行此操作的方法?

您可能需要使用rest api在发布管道中更新任务组版本。请参阅以下步骤:

1、调用api获取所有版本的id

GEThttps://vsrm.dev.azure.com/{organization}/{project}/_api/release/definitions?api版本=6.0

2、调用api获取发布定义

GEThttps://vsrm.dev.azure.com/{organization}/{project}/_-api/release/definitions/{definitionId}?api版本=6.0

3、更新请求正文中的任务组版本并调用

PUThttps://vsrm.dev.azure.com/{organization}/{project}/_api/release/definitions?api版本=6.0

请参阅powershell中的以下完整脚本: 相应地更改{Taskid}及其版本。请参阅以获取个人访问令牌

$listurl="https://vsrm.dev.azure.com/{ogr}/{proj}/_apis/release/definitions?api-version=6.0"

$PAT="Personal access token"

$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))

#get the releases' ids.
$result = Invoke-RestMethod -Uri $listurl -Headers @{Authorization = "Basic {0}" -f $base64AuthInfo} -Method get

#loop the ids to get each release's definition
foreach($release in $result.value){
 
#get each release's definition
 $definitionurl="https://vsrm.dev.azure.com/{ogr}/{proj}/_apis/release/definitions/$($release.id)?&api-version=6.0"
   
  $releaseDefinition = Invoke-RestMethod -Uri $definitionurl-Headers @{Authorization = "Basic {0}" -f $base64AuthInfo} -Method get

  #loop through each stage 
  foreach( $environment in $releaseDefinition.environments){
   
     #loop through each tasks to find the task group
     foreach($task in $environment.deployPhases.workflowTasks){
      
       # change the 'taskId'  to the taskId of your task group
        if($task.taskId -eq "{taskId}"){
           
            $task.version = "2.*"  # update the taskgroup version to the newest version
       }
     }
  }

    $updateurl="https://vsrm.dev.azure.com/{ogr}/{proj}/_apis/release/definitions?api-version=6.0"
   
    # update the release definition 
    Invoke-RestMethod -Uri $updateurl -Headers @{Authorization = "Basic {0}" -f $base64AuthInfo} -ContentType "application/json" -Method PUT -Body (convertto-json $releaseDefinition -Depth 20)
}

您可以使用API或az devopscli获取发布定义的json,搜索并替换版本并将其推回感谢详细的答案和powershell实现。因为我假设有更多的人面临这个问题,所以如果在发布预览或草稿时用户界面中有一个复选框,将所有版本更新为最新版本,这将是一个很好的功能。@doorman,如果您提交一个用户声音。