Azure DevOps 管道中的 Az CLI 命令未按预期工作

问题描述 投票:0回答:1

我想检查管道中拉取请求的状态,如果它们的状态为“已放弃”,则将它们添加到数组中。 但是,在 ADO Pipelines 中运行 Az CLI 命令的记录解决方案对我来说并没有按预期工作。

例如,我在 Azure CLI 任务中有以下几行:

echo "$(System.AccessToken)" | az devops login

az repos pr show --id xxxx

这会导致以下警告,然后是错误:

WARNING: Failed to store PAT using keyring; falling back to file storage.
WARNING: You can clear the stored credential by running az devops logout.
WARNING: Refer https://aka.ms/azure-devops-cli-auth to know more on sign in with PAT.

TF401444: Please sign-in at least once as ... in a web browser to enable access to the service.

编辑:几个月后,我突然想到我可以从 Azure AD 中的上述错误中查找 ID,它会返回一个特定的企业应用程序。有了这个,我真的无法理解这个错误..

我尝试了一些不同的事情:

  1. 使用 bash 或 powershell 脚本并将 PAT 作为“ENV”变量,而不是 Azure CLI 任务:

      - bash
          az repos pr......
        env:
        AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
    
    • 这似乎解决了身份验证问题,但是,使用此方法,
      az repos pr
      命令的结果完全出乎意料:
      • az repos pr show --id xxxx
        返回“错误:TF401180:未找到请求的拉取请求。”,即使 PR 号确实存在。我可以在 Azure DevOps 中或通过在本地 Powershell 或 Ubuntu CLI 中运行命令来确认这一点。

      • az repos pr list --status abandoned --top 10
        只返回一个非常旧的 PR,但如果我在本地运行它,它会返回 10 个最近废弃的 PR。

      • 我正在使用以下内容来确保我连接到正确的 ADO 组织和项目:

        az devops configure --defaults organization=https://dev.azure.com/correctorg
        az devops configure --defaults project=correctProject
        az devops configure --list
        
  2. 此处发布的解决方案:Azure Pipelines 错误“TF401444:请至少登录一次:...”

    • 这没有什么区别。
  3. 使用个人 PAT 而不是 System.AccessToken。

    • 这没有什么区别
  4. 不同的虚拟机映像(Ubuntu 最新、Ubuntu 20.04、Windows 最新)

    • 这没有什么区别
azure-devops azure-pipelines azure-cli azure-repos
1个回答
1
投票

不确定这是否只是一个拼写错误,但您错过了双引号

echo "$(System.AccessToken)" | az devops login

az repos pr show --id xxxx

我尝试了这个,并得到了正确的回应。

© www.soinside.com 2019 - 2024. All rights reserved.