【问题标题】:Az Devops Commands Failing in Azure Pipelines (Classic)Azure Pipelines 中的 Az Devops 命令失败(经典)
【发布时间】:2021-11-26 09:36:49
【问题描述】:

我不知道为什么我不能使用经典模板在 Azure 管道中运行基本的 az devops 命令。

所以基本上,我为我的经典管道定义了两个 Powershell 任务,它们是:

任务 1:使用以下命令登录我的 Azure DevOps 组织:

$mytoken = "My_PersonalAccessToken"
echo $mytoken "|" az devops login --organization https://dev.azure.com/OrganisationName

任务 2:列出我的 Azure DevOps 项目

az devops project list

任务 1 运行良好,确认登录成功。

任务 2 但是失败并在管道输出中显示以下错误:

 Before you can run Azure DevOps commands, you need to run the login command(az login if using AAD/MSA identity else az devops login if using PAT token) to setup credentials.  Please see https://aka.ms/azure-devops-cli-auth for more information.

我做错了什么?非常感谢一些帮助,尽管我必须再次强调,我的管道使用经典模板,并且任何建议的解决方案都必须为此量身定制。

请注意,当我在我的 Powershell ISE 编辑器中运行这些完全相同的命令时,它们都运行良好,并且我列出了所有 Azure DevOps 项目。

【问题讨论】:

  • 您有机会检查提供的解决方案吗?
  • 是的,@BhargaviAnnadevara 我刚刚做了,它工作得非常完美。谢谢。

标签: powershell azure-devops azure-pipelines azure-cli


【解决方案1】:

我看到将 StdIn 上的 PAT 管道传输到 az devops login 失败了。但是,恕我直言,更好的方法是设置 AZURE_DEVOPS_EXT_PAT 环境变量,并且根本不使用 az devops login。 :)

管道变量:

任务:

查看Sign in with a personal access token (PAT)了解更多详情。

【讨论】:

    【解决方案2】:

    最近可能有产品问题,因为 Azure CLI 应该可以工作,它在上个月对我有用,请参阅 here

    目前,如果您想列出项目,可以直接在 PowerShell 任务中调用 REST API Projects - List

    $MyPat = '<PAT>'
    $B64Pat = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$MyPat"))
    $URL = 'https://dev.azure.com/orgname/_apis/projects?api-version=6.0'
    $header = @{
        'Authorization' = 'Basic ' + $B64Pat
        'Content-Type' = 'application/json'
    }
    
    Invoke-RestMethod -Method Get -Uri $URL -Headers $header| ConvertTo-Json
    

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 1970-01-01
      • 2022-10-20
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 2022-07-15
      相关资源
      最近更新 更多