我知道您可以克隆变量组,但这在Project中是有限的。 是否可以将其克隆到其他项目?
答案 0 :(得分:2)
在azure devops UI门户中没有在项目之间克隆变量组的功能。
但是,您可以使用variable group rest api来实现。
首先,您需要调用get variable group rest api来获取变量内容。
GET https://dev.azure.com/{organization}/{project}/_apis/distributedtask/variablegroups/{groupId}?api-version=5.1-preview.1
然后使用添加变量组rest api将具有来自Get rest api的变量内容的新变量组添加到另一个项目。
POST https://dev.azure.com/{organization}/{project}/_apis/distributedtask/variablegroups?api-version=5.1-preview.1
请在下面的powershell脚本示例中:
#get the variable group in projectA
$url = "https://dev.azure.com/{organization}/{projectA}/_apis/distributedtask/variablegroups/{groupId}?api-version=5.1-preview.1"
$PAT= "Personal access token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))
$result=Invoke-RestMethod -Uri $url -Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo1)} -Method get -ContentType "application/json"
#Call add variable group rest api to add variable group in ProjectB
$updateurl = "https://dev.azure.com/{organization}/{projectB}/_apis/distributedtask/variablegroups?api-version=5.1-preview.1"
$body = $result | ConvertTo-Json -Depth 10
Invoke-RestMethod -Uri $updateurl -Headers @{Authorization = "Basic {0}" -f $base64AuthInfo1} -ContentType "application/json" -Method post -Body $body
您还可以使用azure devops命令行az pipelines variable-group create
。有关更多信息,请参见here。
答案 1 :(得分:0)
一种方法 - 使用 curl
、jq
和 xargs
- 对我有用:
curl -H "Content-Type: application/json" -X GET -u 'username':'<PAT>' 'https://dev.azure.com/<organization>/<url encoded source project-name>/_apis/distributedtask/variablegroups?api-version=6.1-preview.1' \
| jq -c '.value[] | del(.id, .createdBy, .modifiedBy, .createdOn, .modifiedOn)' \
| xargs -d'\n' -L1 -I'{}' \
curl -H "Content-Type: application/json" -X POST -u 'username':'<PAT>' -d "{}" 'https://dev.azure.com/<organization>/<url encoded target project-name>/_apis/distributedtask/variablegroups?api-version=6.1-preview.1'
curl
命令从源项目中获取所有可用的变量组jq
从每个 json 对象中删除指定的键并逐行输出 (-c
)xargs
按换行符 (-d'\n'
) 拆分输入并将每一行 (-L1
) 传递给 curl
命令,这会在目标项目中创建一个新的变量组