是否可以在项目之间克隆变量组?

时间:2020-06-25 09:23:56

标签: azure-devops azure-pipelines

我知道您可以克隆变量组,但这在Project中是有限的。 是否可以将其克隆到其他项目?

2 个答案:

答案 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)

一种方法 - 使用 curljqxargs - 对我有用:

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 命令,这会在目标项目中创建一个新的变量组