我想知道是否有办法使用服务连接来做到这一点?有没有办法在脚本中获取它?
恐怕无法在您的 bash 脚本中使用服务连接。在 azure devops 中,服务连接需要在特定的任务中使用,其存储的内容不能被 bash 脚本直接读取。
我建议您可以将您的用户名和令牌保存在变量组( Pipelines -> Library -> Variable Group
) 中。
您可以尝试使用以下 PowerShell 脚本为所有组织项目创建变量组: API: Variablegroups - Add
Projects - List
$token = "PAT"
$url="https://dev.azure.com/{OrganizationName}/_apis/projects?api-version=6.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
ForEach( $projectid in $response.value.id )
{
echo $projectid
$url2 = "https://dev.azure.com/{OrganizationName}/_apis/distributedtask/variablegroups?api-version=6.0-preview.2"
$body = "{
`"name`":`"Cocoapodsauth`",
`"type`":`"Vsts`",
`"variables`":`
{`"token`":{`"isSecret`":true,`"value`":`"PAT`"},`"username`":{`"isSecret`":true,`"value`":`"username`"}},
`"variableGroupProjectReferences`":[
{
`"name`":`"Cocoapodsauth`",
`"projectReference`":
{
`"id`":`"$projectid`"
}}]
}"
$response = Invoke-RestMethod -Uri $url2 -Headers @{Authorization = "Basic $token"} -Method Post -Body $body -ContentType application/json
}
上面的脚本会遍历所有的项目,然后会为每个项目创建一个变量组。
在这种情况下,您可以通过引用变量组直接使用变量。