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

Azure DevOps执行Pulumi preview报错:Azure CLI订阅获取失败

问题原因

AzureCLI@2任务的登录会话仅在当前任务进程内有效,后续的Pulumi@1任务无法复用该会话,导致Pulumi调用Azure CLI时提示未登录。

解决方案

提供两种可行的修改方式,任选其一即可:

方式一:在AzureCLI@2任务内直接执行pulumi preview

将Pulumi预览操作合并到已完成Azure登录的CLI任务中,直接继承认证上下文:

trigger:
- main

variables:
- name: one
  value: initialValue 

pool:
  vmImage: ubuntu-latest

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.12.1'
  displayName: 'set Python version'

- script: |
    python -m pip install --upgrade pip
    pip install -r requirements.txt
  displayName: 'Install dependencies'

- script: 'curl -fsSL https://get.pulumi.com | sh'
  displayName: 'Installing pulumi'

- script: 'pulumi login'
  displayName: 'Authenticating pulumi'
  env:
    PULUMI_ACCESS_TOKEN: $(PULUMI_ACCESS_TOKEN)

# 合并Azure订阅设置与Pulumi预览到同一CLI任务
- task: AzureCLI@2
  inputs:
    azureSubscription: '<subscription from service connection>'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az account set --subscription <sub id>
      # 将Pulumi安装路径加入环境变量,确保能找到命令
      export PATH=$PATH:$HOME/.pulumi/bin
      pulumi preview --stack dev

方式二:传递Azure认证变量给Pulumi任务

在AzureCLI@2任务中导出认证所需的环境变量,供后续Pulumi任务直接使用:

trigger:
- main

variables:
- name: one
  value: initialValue 

pool:
  vmImage: ubuntu-latest

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.12.1'
  displayName: 'set Python version'

- script: |
    python -m pip install --upgrade pip
    pip install -r requirements.txt
  displayName: 'Install dependencies'

- script: 'curl -fsSL https://get.pulumi.com | sh'
  displayName: 'Installing pulumi'

- script: 'pulumi login'
  displayName: 'Authenticating pulumi'
  env:
    PULUMI_ACCESS_TOKEN: $(PULUMI_ACCESS_TOKEN)

- task: AzureCLI@2
  inputs:
    azureSubscription: '<subscription from service connection>'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az account set --subscription <sub id>
      # 获取Azure访问令牌并设置为流水线变量
      AZURE_TOKEN=$(az account get-access-token --query accessToken -o tsv)
      echo "##vso[task.setvariable variable=AZURE_ACCESS_TOKEN]$AZURE_TOKEN"
      echo "##vso[task.setvariable variable=AZURE_SUBSCRIPTION_ID]<sub id>"

- task: Pulumi@1
  inputs:
    command: 'preview'
    stack: 'dev'
  env:
    # 传递认证变量给Pulumi,替代Azure CLI登录
    AZURE_ACCESS_TOKEN: $(AZURE_ACCESS_TOKEN)
    AZURE_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)
额外说明
  • 无需同时设置PULUMI_ACCESS_TOKEN和pulumi.access.token,保留其中一个即可,Pulumi会优先读取环境变量PULUMI_ACCESS_TOKEN。
  • 确保<subscription from service connection>和<sub id>替换为你实际的服务连接名称和订阅ID。

内容的提问来源于stack exchange,提问作者boybakal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:37:46