You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自托管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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:28:15