gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:30:52 24 4
gpt4 key购买 nike

使用 Azure Devops 更新任务组的推荐方法是首先创建一个草稿并在几个版本上对其进行测试。接下来通过发布任务组,创建一个包含最新更改的新版本。
这是文档:
https://docs.microsoft.com/en-us/azure/devops/pipelines/library/task-groups?view=azure-devops
由于我有超过 100 个使用同一个任务组的发布管道,我想知道是否有一种方法可以自动将所有发布管道更新到任务组的最新发布版本。目前我需要通过选择任务组的最新版本来手动更新每个版本。
发布新版本时有没有办法自动执行此操作?

最佳答案

您可能需要使用 rest api 来更新发布管道中的任务组版本。请参见以下步骤:
1、调用Release Definitions - List api 来获取所有版本的 id。GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=6.02、调用Release Definition - Get api 来获取发布定义。GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions/{definitionId}?api-version=6.03、更新请求正文中的任务组版本并调用Release definition update api .PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=6.0请参阅以下 powershell 中的完整脚本:
相应地更改 {Taskid} 及其版本。见 here获取个人访问 token

$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)
}

关于azure-devops - Azure DevOps 自动将多个版本更新为最新发布的任务组版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65026102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com