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

如何在CI YAML脚本的AzureCLI@2中使用az container create的--environment-variables

在AzureCLI@2中正确传递环境变量到Azure容器

问题分析

你尝试用az container create的--environment-variables参数传递SecretDatabase变量失败,核心原因是Azure DevOps秘密变量不会自动暴露为任务环境变量,且不同脚本类型(PowerShell/Bash)的变量引用语法不同。

解决方案

1. 显式映射秘密变量到任务环境

在AzureCLI@2任务中,通过env块将管道的秘密变量映射为任务可访问的环境变量,这是传递秘密变量的关键步骤。

2. 根据脚本类型选择正确的变量引用

PowerShell 脚本示例

- task: AzureCLI@2
  inputs:
    azureSubscription: '你的Azure订阅名称'
    scriptType: 'ps'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az container create --verbose `
        --name $(containerGroupName) `
        --resource-group $(acrResourceGroup) `
        --image $(containerRegistryUrl)/$(imageRepository):$(Build.BuildId) `
        --cpu 1.00 `
        --memory 2.0 `
        --registry-login-server $(containerRegistryUrl) `
        --registry-username "$(containerRegistryName)" `
        --registry-password "$(acrPassword)" `
        --location eastus `
        --environment-variables SecretDatabase="$env:SecretDatabase"
  env:
    SecretDatabase: $(SecretDatabase) # 映射管道秘密变量到任务环境

Bash 脚本示例

- task: AzureCLI@2
  inputs:
    azureSubscription: '你的Azure订阅名称'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az container create --verbose \
        --name $(containerGroupName) \
        --resource-group $(acrResourceGroup) \
        --image $(containerRegistryUrl)/$(imageRepository):$(Build.BuildId) \
        --cpu 1.00 \
        --memory 2.0 \
        --registry-login-server $(containerRegistryUrl) \
        --registry-username "$(containerRegistryName)" \
        --registry-password "$(acrPassword)" \
        --location eastus \
        --environment-variables SecretDatabase="$SecretDatabase"
  env:
    SecretDatabase: $(SecretDatabase) # 映射管道秘密变量到任务环境

关键注意事项

  • 秘密变量必须通过env块显式映射,否则任务无法直接访问$(SecretDatabase)或$env:SecretDatabase。
  • 如果变量值包含空格、特殊字符(如&、=),必须用双引号包裹值部分,避免shell解析错误。
  • 脚本类型(ps/bash)决定了环境变量的引用语法:PowerShell用$env:变量名,Bash用$变量名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:25:05