如何将Azure变量组中的变量设为Azure Pipeline的环境变量?
Azure Pipeline中把数据库变量组配置为Python集成测试的环境变量
方法1:直接加载变量组(推荐)
Azure Pipeline本身支持直接引用变量组,不用额外写脚本,操作很简单:
- 在Pipeline的YAML开头添加变量组引用:
variables: - group: <你的变量组名称或ID>
- 在运行pytest的
script任务里,直接把变量组里的数据库变量映射为环境变量(Azure也会自动把变量组的变量转为环境变量,变量名里的.会被替换成_)
修改后的Pipeline示例:
variables: - group: <数据库变量组ID/名称> steps: - script: | pdm run pytest \ --variables "$VARIABLE_FILE" \ --napoleon-docstrings \ --doctest-modules \ --color=yes \ --junitxml=junit/test-results.xml \ integration env: # 手动映射变量组变量到环境变量(需要重命名时用) DB_HOST: $(DB_HOST_FROM_GROUP) DB_USER: $(DB_USER_FROM_GROUP) DB_PASSWORD: $(DB_PASSWORD_FROM_GROUP) <原来的其他环境变量>
在Python测试代码里,用os模块读取环境变量即可:
import os # 读取环境变量 db_host = os.environ.get("DB_HOST") db_user = os.environ.get("DB_USER") db_password = os.environ.get("DB_PASSWORD") # 初始化数据库连接 # conn = your_db_connect_function(db_host, db_user, db_password)
方法2:通过az cli导出变量组(特殊场景用)
如果必须用az cli命令获取变量,可以用PowerShell解析输出并设置为Pipeline任务变量,传递给后续测试步骤:
steps: - powershell: | # 用JSON格式获取变量组内容(比table格式更易解析) $vars = az pipelines variable-group variable list --group-id <some_group_id> --output json | ConvertFrom-Json # 遍历变量,设置为Pipeline任务变量(后续任务可直接引用) foreach ($var in $vars.PSObject.Properties) { # issecret参数自动处理敏感变量的加密逻辑 Write-Host "##vso[task.setvariable variable=$($var.Name);issecret=$($var.Value.isSecret)]$($var.Value.value)" } displayName: "加载数据库变量组" env: # 给az cli授权,使用Pipeline自带的访问令牌 AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) - script: | pdm run pytest \ --variables "$VARIABLE_FILE" \ --napoleon-docstrings \ --doctest-modules \ --color=yes \ --junitxml=junit/test-results.xml \ integration env: DB_HOST: $(DB_HOST) DB_USER: $(DB_USER) DB_PASSWORD: $(DB_PASSWORD) <原来的其他环境变量>
注意事项
- 数据库密码这类敏感变量,在变量组里要设为秘密变量,Pipeline会自动加密,日志中也不会明文显示。
- 如果变量组里的变量名带
.(比如DB.HOST),Azure会自动转为DB_HOST作为环境变量,Python里对应读取DB_HOST即可。 - 优先用方法1,减少脚本维护成本,避免额外的解析逻辑出错。
内容的提问来源于stack exchange,提问作者Ivajlo Iliev
相关产品推荐
相关产品推荐

