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

Time:01-31

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?

CodePudding user response:

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

enter image description here

# 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 :-
enter image description here

Permit access :-

enter image description here

Pipeline ran successfully with the variable:-

enter image description here

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.

enter image description here

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

enter image description here

enter image description here

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

enter image description here

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

  • Related