# 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/vsts/pipelines/languages/python jobs: - job: 'Test' # Configure Build Environment to use Azure Pipelines to build Python project using macOS pool: vmImage: 'macOS 10.13' # other options 'Ubuntu 16.04', 'VS2017-Win2016' # Run the pipeline with multiple Python versions strategy: matrix: Python35: python.version: '3.5' TOXENV: 'py35' Python36: python.version: '3.6' TOXENV: 'py36' Python37: python.version: '3.7' TOXENV: 'py37' # Increase the maxParallel value to simultaneously run the job for all versions in the matrix (max 10 for free open-source) maxParallel: 4 steps: # Set the UsePythonVersion task to reference the matrix variable for its Python version - task: UsePythonVersion@0 inputs: versionSpec: '$(python.version)' architecture: 'x64' # Install dependencies - install specific PyPI packages with pip, including cmd2 dependencies - script: | python -m pip install --upgrade pip && pip3 install --upgrade setuptools tox displayName: 'Upgrade pip and setuptools' continueOnError: false # TODO: Consider adding a lint test to use pycodestyle, flake8, or pylint, to check code style conventions # Test - test with pytest, collect coverage metrics with pytest-cov, and publish these metrics to codecov.io - script: | tox -e $(TOXENV) displayName: 'Run tests and code coverage' continueOnError: false # Publish test results to the Azure DevOps server - task: PublishTestResults@2 inputs: testResultsFiles: '**/test-*.xml' testRunTitle: 'Python $(python.version)' condition: succeededOrFailed()