trigger: - main - dev - feature/* - hotfix/* - bugfix/* - release/* parameters: # https://stackoverflow.com/a/70046417 - name: matrix type: object default: - job_name: 'UbuntuPython38' py: '3.8' img: 'ubuntu-latest' every_time: false - job_name: 'UbuntuPython310' py: '3.10' img: 'ubuntu-latest' every_time: true - job_name: 'WindowsPython38' py: '3.8' img: 'windows-latest' every_time: false - job_name: 'WindowsPython310' py: '3.10' img: 'windows-latest' every_time: false - job_name: 'MacOSPython38' py: '3.8' img: 'macOS-latest' every_time: false - job_name: 'MacOSPython310' py: '3.10' img: 'macOS-latest' every_time: false stages: - stage: Test jobs: - ${{ each item in parameters.matrix }}: - job: ${{ item.job_name }} pool: vmImage: ${{ item.img }} condition: or( eq(variables['Build.Reason'], 'PullRequest'), ${{ item.every_time }} ) steps: - task: UsePythonVersion@0 inputs: versionSpec: ${{ item.py }} displayName: 'Use Python ${{ item.py }}' - script: | python -m pip install pre-commit pre-commit install pre-commit run --all-files displayName: 'Run pre-commits' - script: | python -m pip install --upgrade pip==23.0.1 pip install wheel==0.38.4 --upgrade pip install setuptools==66 --upgrade pip install build==0.10.0 pip install pytest-azurepipelines displayName: 'Install build dependencies' - script: | python -m build displayName: 'Build PrimAITE' - script: | PRIMAITE_WHEEL=$(ls ./dist/primaite*.whl) python -m pip install $PRIMAITE_WHEEL[dev] displayName: 'Install PrimAITE' condition: or(eq( variables['Agent.OS'], 'Linux' ), eq( variables['Agent.OS'], 'Darwin' )) - script: | forfiles /p dist\ /m *.whl /c "cmd /c python -m pip install @file[dev]" displayName: 'Install PrimAITE' condition: eq( variables['Agent.OS'], 'Windows_NT' ) - script: | primaite setup displayName: 'Perform PrimAITE Setup' - script: | pytest -n 4 displayName: 'Run tests'