我正在尝试使用我使用 Azure 中的服务连接创建的授权承载令牌来克隆存储库。服务主体具有对我尝试克隆的存储库的读者访问权限。
设置默认组织和项目:
az devops configure --defaults organization="$org" project="$project"
$org
是 azure devops 组织,$project
是 git 存储库所在的项目。
使用以下命令获取访问令牌:
$token = az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" --query "accessToken" --output tsv
上述步骤是在 powershell 脚本中完成的,该脚本使用管道中的 AzureCLI@2 任务运行。使用以下命令将获得的令牌保存在 git config 中:
git config --local http.<repo base URL>.extraheader "AUTHORIZATION bearer: $token"
运行 git clone 命令时,出现以下错误:
error: failed to execute prompt script (exit code 1)
fatal: could not read Username for '<repo URL>': No such file or directory
知道为什么我会收到此错误吗?我是否缺少任何步骤?
您可以在doc之后获取devops repo url,并简单地复制token,如下所示:
git clone https://<your-organization>@dev.azure.com/<your-organization>/<your-project>/_git/<your-repo> --config http.extraheader="Authorization: Bearer $(token)"
步骤如下:
像您一样创建服务连接,找到服务主体并将其添加为目标 devops 存储库的
contributor role +Basic access level
。以便不记名令牌有权访问存储库。
DevOps 管道 yaml 示例如下。我将令牌输出为变量,并在下一个 powershell 任务中使用它来克隆存储库。
pool:
vmImage: Windows-latest
steps:
- task: AzureCLI@2
inputs:
azureSubscription: '<your service connection>'
scriptType: 'ps'
scriptLocation: 'inlineScript'
inlineScript: |
$token = az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" --query "accessToken" --output tsv
Write-Host "##vso[task.setvariable variable=bearertoken;]$token"
- powershell: |
git clone https://<orgname>@dev.azure.com/<orgname>/<projectname>/_git/<reponame> --config http.extraheader="Authorization: Bearer $(bearertoken)"
cd testssis # <--- Go to my repo folder check the repo content
Get-ChildItem .