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

Azure静态Web应用部署:能否用单个管道变量传递多环境变量?

可以实现,具体操作如下

方案一:用单个管道变量整合所有环境变量

1. 定义单个管道变量

在Azure DevOps管道的变量配置中,创建一个名为AAD_ENV_VARS的变量,值为所有环境变量的键值对(每行一个,或用\n分隔):

REACT_APP_AAD_UI_APP_CLIENT_ID=你的客户端ID值
REACT_APP_AAD_API_APP_CLIENT_ID=你的API客户端ID值
REACT_APP_AAD_APP_TENANT_ID=你的租户ID值
REACT_APP_AAD_APP_SERVICE_BASE_URI=你的服务基础URI值

2. 添加脚本任务解析变量

在AzureStaticWebApp@0任务前,添加一个Bash或PowerShell任务,将单个变量解析为构建可用的环境变量:

Bash版本

- task: Bash@3
  displayName: '配置AAD环境变量'
  inputs:
    targetType: 'inline'
    script: |
      echo "$(AAD_ENV_VARS)" | while IFS='=' read -r key value; do
        export "$key"="$value"
        echo "##vso[task.setvariable variable=$key]$value"
      done

PowerShell版本

- task: PowerShell@2
  displayName: '配置AAD环境变量'
  inputs:
    targetType: 'inline'
    script: |
      $envVars = $(AAD_ENV_VARS) -split "`n"
      foreach ($var in $envVars) {
        if (-not [string]::IsNullOrEmpty($var)) {
          $keyValue = $var -split '=', 2
          $key = $keyValue[0].Trim()
          $value = $keyValue[1].Trim()
          [Environment]::SetEnvironmentVariable($key, $value, 'Process')
          Write-Host "##vso[task.setvariable variable=$key]$value"
        }
      }

3. 修改部署任务

移除原任务中的env字段,脚本已将环境变量注入构建环境,npm run build会自动读取这些变量:

- task: AzureStaticWebApp@0
    name: DeployStaticWebApp
    displayName: Deploy Static Web App
    inputs:
      app_location: 'web-app'
      app_build_command: 'npm ci && npm run build'
      cwd: '${{ parameters.root }}/webapp_package'
      azure_static_web_apps_api_token: $(deployment_token)

方案二:用变量组整合(更易管理)

如果不需要严格的单个变量,用变量组整合会更方便维护:

1. 创建变量组

在Azure DevOps的库中新建变量组(比如命名为AAD_Env_Vars),添加以下四个变量并设置对应值:

  • REACT_APP_AAD_UI_APP_CLIENT_ID
  • REACT_APP_AAD_API_APP_CLIENT_ID
  • REACT_APP_AAD_APP_TENANT_ID
  • REACT_APP_AAD_APP_SERVICE_BASE_URI

2. 在管道中引用变量组

variables:
- group: AAD_Env_Vars

3. 调整部署任务

变量组中的变量会自动成为管道全局变量,构建命令npm run build可直接读取,因此可以移除原env字段,或保留字段直接引用变量:

- task: AzureStaticWebApp@0
    name: DeployStaticWebApp
    displayName: Deploy Static Web App
    inputs:
      app_location: 'web-app'
      app_build_command: 'npm ci && npm run build'
      cwd: '${{ parameters.root }}/webapp_package'
      azure_static_web_apps_api_token: $(deployment_token)
    # 可选:如果需要显式声明,可保留以下env字段
    # env:
    #   REACT_APP_AAD_UI_APP_CLIENT_ID: $(REACT_APP_AAD_UI_APP_CLIENT_ID)
    #   REACT_APP_AAD_API_APP_CLIENT_ID: $(REACT_APP_AAD_API_APP_CLIENT_ID)
    #   REACT_APP_AAD_APP_TENANT_ID: $(REACT_APP_AAD_APP_TENANT_ID)
    #   REACT_APP_AAD_APP_SERVICE_BASE_URI: $(REACT_APP_AAD_APP_SERVICE_BASE_URI)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:23:11