[英]Az Devops Commands Failing in Azure Pipelines (Classic)
我不知道为什么我不能使用经典模板在 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失败并在管道 output 中显示以下错误:
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 项目。
我看到通过管道将 StdIn 上的 PAT 传输到az devops login
失败。 但是,恕我直言,更好的方法是设置AZURE_DEVOPS_EXT_PAT
环境变量,并且根本不使用az devops login
。 :)
管道变量:
任务:
查看使用个人访问令牌 (PAT) 登录以了解更多详细信息。
也许最近有产品问题,因为 Azure CLI 应该可以用,上个月它对我有用,请看这里。
现在,如果你想列出项目,你可以调用 REST API 项目 - 直接在 PowerShell 任务中列出。
$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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.