我想检查管道中拉取请求的状态,如果它们的状态为“已放弃”,则将它们添加到数组中。 但是,在 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,它会返回一个特定的企业应用程序。有了这个,我真的无法理解这个错误..
我尝试了一些不同的事情:
使用 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
此处发布的解决方案:Azure Pipelines 错误“TF401444:请至少登录一次:...”
使用个人 PAT 而不是 System.AccessToken。
不同的虚拟机映像(Ubuntu 最新、Ubuntu 20.04、Windows 最新)
不确定这是否只是一个拼写错误,但您错过了双引号
echo "$(System.AccessToken)" | az devops login
az repos pr show --id xxxx
我尝试了这个,并得到了正确的回应。