我有以下yaml管道构建文件:
pr:
branches:
include:
- master
jobs:
- job: 'Test'
pool:
vmImage: 'Ubuntu-16.04'
strategy:
matrix:
Python36:
python.version: '3.6'
maxParallel: 4
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '$(python.version)'
architecture: 'x64'
env:
POSTGRES: $(POSTGRES)
- script: python -m pip install --upgrade pip && pip install -r requirements.txt
displayName: 'Install dependencies'
- script: |
pip install pytest
pytest tests -s --doctest-modules --junitxml=junit/test-results.xml
displayName: 'pytest'
我在管道设置中将变量POSTGRES
设置为秘密变量。在python代码中,所有环境变量都通过调用读取
if not os.getenv(var):
raise ValueError(f'Environment variable \'{var}\' is not set')
执行构建后,它将为POSTGRES
变量准确抛出以上错误。环境变量设置不正确吗?
答案 0 :(得分:0)
我不知道你是否仍然需要这个,但是... 如果您查看文档here,它会显示:
与普通变量不同,它们不会自动解密为 脚本的环境变量。您可以明确地将它们映射到 但是。
因此,看来您做得对。也许尝试为映射变量使用其他名称。可能是初始加密变量的名称混淆了映射(因为它已经是一个变量,因此不会重新映射)。
答案 1 :(得分:0)
要使环境变量在 Python 脚本中可用,您需要在使用它的步骤中定义它:
- script: |
pip install pytest
pytest tests -s --doctest-modules --junitxml=junit/test-results.xml
displayName: 'pytest'
env:
POSTGRES: $(POSTGRES)