azure-devops-rest-api - 是否可以使用 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
}
为了帮助澄清,我寻求的范围不能在环境集合中,因为它特定于每个元素(阶段)。范围在给定变量组的发布定义级别设置(再次参考图像)。
解决方案
我使用这个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
],
...
}
],
...
}
笔记:
- 请使用您自己的较新的
revision
. - 中的
id
值lastRelease
是您的发布定义 ID。 - 在 中指定阶段名称
environments
name
。 - 中的
variableGroups
值environments
是您要更改范围的变量组的 id。
推荐阅读
- python - 在Django中单击like按钮时出错
- react-native - dispatch 不调用reducer React Native
- python - 在 pandas 中用较短的名称替换所有行值
- tensorflow - 超过两个输入的 TF BERT 输入打包器
- go - 如何从 aes 解密中获取二进制数据文件并保存为 tar.gz 存档
- python - 使用 List 索引映射列值
- regex - 如何在正则表达式中使用前瞻和 $
- android - 测试中的 LiveData(由 Flow 支持)反映旧值
- python - 如何根据存储在 python 中的 .txt 文件中的极坐标数据绘制曲线?
- keyword - AIML v2:Pandorabots - 两个词关键字