自托管Github Actions Runner上Azure CLI取Key Vault密钥登录异常求助
解决Github Actions自托管Runner中Azure CLI未登录问题
问题描述
使用Github Actions自托管Runner时,执行Azure CLI命令读取Azure Key Vault密钥,报错Please run 'az login' to setup account。但此前已通过azure/login@v1步骤完成登录并显示成功,重新安装Azure CLI(Runner显示已是最新版本)后问题仍未解决。
相关YAML代码片段
- name: Install Azure CLI run: | sudo apt-get install ca-certificates curl apt-transport-https lsb-release gnupg curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/microsoft.gpg > /dev/null AZ_REPO=$(lsb_release -cs) echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | sudo tee /etc/apt/sources.list.d/azure-cli.list sudo apt-get update sudo apt-get install azure-cli - name: Login to Azure uses: azure/login@v1 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/CLI@v1 with: inlineScript: | value1=$(az keyvault secret show --name $AZURE_SECRET_NAME --vault-name $AZURE_KEYVAULT_NAME --query value -o tsv) echo $value1 value2=$(az keyvault secret show --name $AZURE_SECRET_NAME --vault-name $AZURE_KEYVAULT_NAME --query value) echo $value2 #echo "::add-mask::$value" #printf "%s " $value >> GITHUB_OUTPUT echo "${value2//\"}" >> GITHUB_OUTPUT
错误截图

解决方案
- 确认环境变量传递:
azure/login@v1会将登录凭证写入环境变量,但自托管Runner可能存在环境隔离问题,导致后续azure/CLI@v1步骤无法读取这些变量。可在CLI步骤前添加env命令打印环境变量,检查AZURE_ACCESS_TOKEN、AZURE_TENANT_ID等关键变量是否存在。 - 在CLI步骤内直接登录:跳过
azure/login@v1,在azure/CLI@v1的inlineScript中直接执行服务主体登录命令,确保上下文正确:az login --service-principal -u ${{ secrets.AZURE_CLIENT_ID }} -p ${{ secrets.AZURE_CLIENT_SECRET }} --tenant ${{ secrets.AZURE_TENANT_ID }} az account set --subscription ${{ secrets.AZURE_SUBSCRIPTION_ID }} # 后续的密钥读取命令 - 验证版本兼容性:执行
az --version确认Azure CLI版本,同时检查azure/login@v1和azure/CLI@v1的版本是否与当前CLI版本兼容,必要时指定固定版本的Action。 - 检查权限与网络:确保自托管Runner所在机器能访问Azure Key Vault的网络(如未被防火墙/代理拦截),同时确认所用服务主体已被授予Key Vault的
Secret Get权限。
内容的提问来源于stack exchange,提问作者user264953
相关产品推荐
相关产品推荐

