0

我有一组托管在 Github(私有存储库)上的私有 Cocoapods 库,由 Azure Devops 平台管理。

每个吊舱都有一个广告项目。

关键是,当我尝试执行pod repo addpod install(我在 bash 脚本上执行此操作)时,我需要访问我的私有规范和 pod 存储库。

我可以选择使用私有访问令牌作为秘密变量,或者使用 SSH 密钥作为安全文件,但是我需要在我的每个项目上部署它。

git config --global url."https://$(username):$(token)@github.com/".insteadOf "https://github.com"

由于它可以在同一组织内的跨项目中共享,我想知道是否有办法使用服务连接来做到这一点?有没有办法在脚本中获取它?我绝对需要为它创建自己的广告扩展吗?

4

1 回答 1

0

我想知道是否有办法使用服务连接来做到这一点?有没有办法在脚本中获取它?

恐怕无法在您的 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

}

上面的脚本会遍历所有的项目,然后会为每个项目创建一个变量组。

在这种情况下,您可以通过引用变量组直接使用变量。

在此处输入图像描述

于 2021-03-31T05:37:24.757 回答