简体   繁体   中英

How to set variables, defined in Azure variable group, as env variables in Azure pipeline?

We run integration tests, written in Python, in Azure pipeline. The run is triggered in this way:

  - script: |

      pdm run pytest \
        --variables "$VARIABLE_FILE" \
        --napoleon-docstrings \
        --doctest-modules \
        --color=yes \
        --junitxml=junit/test-results.xml \
        integration
    env:
        <different_environment_variables>

Some integration tests will make connection to a database, and the properties, needed for connection to the database, are stored in a variable group in Azure. I can get them via:

  - powershell: |
      az pipelines variable-group variable list --group-id <some_group_id> --output table

but i do not know how to set them later as environment variables and use them in the python code?

You can reference the variables from your variable group directly in your python YAML pipeline like below:-

在此处输入图像描述

# Python package

# Create and test a Python package on multiple Python versions.

# Add steps that analyze code, save the dist with the build record, publish to a PyPI-compatible index, and more:

# https://docs.microsoft.com/azure/devops/pipelines/languages/python

  

trigger:

- master

  

pool:

vmImage: ubuntu-latest

strategy:

matrix:

Python27:

python.version: '2.7'

Python35:

python.version: '3.5'

Python36:

python.version: '3.6'

Python37:

python.version: '3.7'

  
  

variables:

- group: SharedVariables

  

steps:

- task: UsePythonVersion@0

inputs:

versionSpec: '$(python.version)'

displayName: 'Use Python $(python.version)'

  

- script: |

echo $(databaseservername)

  

- script: |

python -m pip install --upgrade pip

pip install -r requirements.txt

displayName: 'Install dependencies'

  

- script: |

pip install pytest pytest-azurepipelines

pytest

displayName: 'pytest'

variables:

- group: SharedVariables

- script: |

echo $(databaseservername)

Pipeline ran successfully like below:-

Authorize and allow the permission to run the pipeline like below:-
在此处输入图像描述

Permit access:-

在此处输入图像描述

Pipeline ran successfully with the variable:-

在此处输入图像描述

You can also pass the variables in the pipeline with arguments and inline script with python task like below:-


variables:
- group: variableGroup

steps:
  - task: PythonScript@0
    displayName: 'Run a Python script'
    inputs:
      scriptPath: 'Test.py'
      arguments: --variableInScript $(variableInVariableGroup)

Inline Python task:-

variables:

- group: SharedVariables

  

steps:

- task: UsePythonVersion@0

inputs:

versionSpec: '$(python.version)'

displayName: 'Use Python $(python.version)'

  

- script: |

echo $(databaseservername)

- task: PythonScript@0

inputs:

scriptSource: 'inline'

script: 'print(''databaseservername: $(databaseservername))'')'

Output:-

databaseservername variable was encrypted like below after running as an argument in the python inline script.

在此处输入图像描述

You can link the variable group in the release pipeline like below and call it in multiple pipelines across different stages too:-

在此处输入图像描述

在此处输入图像描述

Similarly, you can add Azure CLI task for your shell script to callaz pipelines variable-group variable list in your yaml pipeline and reference it like below:-

- task: AzureCLI@2

inputs:

azureSubscription: '<Subscription-name>(sub-id)'

scriptType: 'bash'

scriptLocation: 'inlineScript'

inlineScript: |

az pipelines variable-group variable list

--org ''https://dev.azure.com/org/''

--project project --group-id id

--only-show-errors --output json

在此处输入图像描述

Reference:-

Access variables from Variable Groups inside Python script task in Azure DevOps Yaml pipeline By Bo Soborg Perterson

Pass Variable Group as Dictionary To Python Script By Joy wang

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM