错误:所请求的资源需要用户身份验证:在AzureCLI任务构建管道中。

10
无法通过AzureCLI任务触发Azure管道构建。
任务:
- task: AzureCLI@2
  inputs:
    azureSubscription: 'Free Trial(My subscription)'
    scriptType: 'pscore'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az --version
      echo "Running : az account show"
      az account show
      #export AZURE_DEVOPS_EXT_PAT='mypat'
      $env:AZURE_DEVOPS_EXT_PAT='mypat'
      az pipelines create --name newPipeline --org https://dev.azure.com/AbiNilOrg/ --project azure-devops-kubernetes-terraform --branch master

错误输出如下:
Running : az account show
{
  "environmentName": "AzureCloud",
  "homeTenantId": "***",
  "id": "73c1af29-384c-4574-bd88-92d7bb392cfc",
  "isDefault": true,
  "managedByTenants": [],
  "name": "Free Trial",
  "state": "Enabled",
  "tenantId": "***",
  "user": {
    "name": "***",
    "type": "servicePrincipal"
  }
}
WARNING: This command is in preview and under development. Reference and support 
levels: https://aka.ms/CLI_refstatus
ERROR: The requested resource requires user authentication: 
https://dev.azure.com/AbiNilOrg/azure-devops-kubernetes- 
terraform/_apis/serviceendpoint/endpoints
##[error]Script failed with exit code: 1

我理解 Azure 无法形成正确的 URI 以命中 REST 端点。

ERROR: The requested resource requires user authentication: 
https://dev.azure.com/AbiNilOrg/azure-devops-kubernetes- 
terraform/_apis/serviceendpoint/endpoints

URI的后缀serviceendpoint/endpoints不正确。
ADO的开发人员,如果有任何想法,请帮忙解决!
提前感谢! Nilotpal

需要用户身份验证 - 你知道你的服务主体是否有权限在该端点上执行操作吗? - Nick.McDermaid
这个回答解决了你的问题吗?[如何在DevOps管道中安全登录Az CLI] (https://dev59.com/Ib3pa4cB1Zd3GeqPmtsT) - 030
2个回答

8
当您设置env:AZURE_DEVOPS_EXT_PAT时,仍需通过调用登录:
az devops login --organization https://dev.azure.com/contoso

因为:

如果您已经通过 az login 互动式登录或使用用户名和密码进行了登录,则无需提供令牌,因为 az devops 命令现在支持通过 az login 进行登录。但是,不支持通过 az login 进行服务主体登录,在这种情况下需要一个 PAT 令牌。

在此任务中,背后的操作是使用服务主体登录,您也可以在 account show 中看到此操作:

  "user": {
    "name": "***",
    "type": "servicePrincipal"
  }

了解更多信息,请查看此处的文档。


感谢rzysztof Madej。az devops login --organization https://dev.azure.com/contoso 似乎在等待用户输入令牌。我该如何在运行中的任务中输入令牌?我已经设置了PAT的环境变量。作业无限期地等待。 - Nilotpal
1
你能否尝试在常规的PowerShell任务中完成这个吗? - Krzysztof Madej
是的,它可以在简单的Bash脚本中工作。AzureCLI任务似乎有一个错误,无法正常工作。 - Nilotpal
这可能不是一个错误。基本上,您已经通过身份验证,因此这只是一个小故障。 - Krzysztof Madej

1

AZURE_DEVOPS_EXT_PAT 环境变量设置为具有生成(读取和执行)权限的个人访问令牌,并在不显式登录的情况下运行下面的命令,在 GitHub 工作流中为我解决了问题。

az pipelines build queue --definition-name $azure_devops_cd_pipeline_name --organization $azure_devops_organisation_url --project $project_name --branch $git_branch

我希望这在Azure DevOps中也能起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接