Azure管道环境变量失败

时间:2019-04-11 01:29:13

标签: python environment-variables azure-pipelines

我有以下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变量准确抛出以上错误。环境变量设置不正确吗?

2 个答案:

答案 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)