首页 > 解决方案 > 是否可以使用 DevOps CLI 或通过 REST 设置变量组范围

问题描述

我能够通过 CLI 和 CLI REST 方法的组合添加/修改 DevOps 版本定义。发布定义对象不包括(据我所知)控制变量组范围的属性。发布定义本身采用一组变量组 ID,但在发布定义的上下文中也存在变量组的范围。哪里是?

是否支持在 CLI 或 CLI REST 界面中访问变量组范围属性?下图显示了来自 Azure 门户的界面。选择省略号 (...),您可以“更改范围”,其中显示阶段列表。您比保存然后保存发布定义。 在此处输入图像描述

我捕获了提琴手的输出,但正文内容很大而且不是很有帮助,我没有看到与范围列表相关的任何内容。但显然这是可以做到的。我只是不确定通过 CLI 或 REST 这样做。

编辑:这是脚本的视图。在我可以看到的发布定义中的任何地方都没有“范围”,它应该包含环境名称列表。每个环境名称(又名阶段)包含许多与每个环境关联的变量组。

$sourcedefinition = getreleasedefinitionrequestwithpat $reldefid $personalAccesstoken $org $project | select -Last 1

Write-Host "Root VariableGroups: " $sourcedefinition.variableGroups

$result = @()
#search each stage in the pipeline
foreach($item in $sourcedefinition.environments)
{    
  Write-Host ""
  Write-Host "environment name: "$item.name   
  Write-Host "environment variable groups: "$item.variableGroups
}

为了帮助澄清,我寻求的范围不能在环境集合中,因为它特定于每个元素(阶段)。范围在给定变量组的发布定义级别设置(再次参考图像)。

标签: azure-devops-rest-apiazure-devops-extensionsazure-cli2

解决方案


我使用这个API来获取我的release的Definitions,发现当范围不同时,ReleaseDefinition和ReleaseDefinitionEnvironment中的variableGroups不同

然后我认为如果我们想通过 REST API 更改范围,我们只需要更改variableGroups并更新定义。我们可以使用这个 API来更新定义。

编辑: 例如,我想将我的范围从Release 更改为 Stage,我使用如下 API:

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

请求正文:(我从第一个 Get Definitions API 响应正文中得到这个并进行一些更改以使用它)

{
   "source":"userInterface",
   "revision":6,
   ...
   "lastRelease": {
       "id": 1,
       ...
   },
   ...
   "variables":{          
   },
   "variableGroups":[],
   "environments":[
      {
         "name": "Stage 1",
         ...
         "variables":{                
         },
         "variableGroups":[ 
             4               
         ],
         ...
      }
    ],
  ...
}

笔记:

  1. 请使用您自己的较新的revision.
  2. 中的idlastRelease是您的发布定义 ID。
  3. 在 中指定阶段名称environments name
  4. 中的variableGroupsenvironments是您要更改范围的变量组的 id。

推荐阅读