From 6291a55e35345f083fcc5ce3efe8cafef1dad77c Mon Sep 17 00:00:00 2001 From: mwanjajoel Date: Wed, 10 Jun 2020 01:19:20 +0300 Subject: [PATCH] Set up CI with Azure Pipelines [skip ci] --- azure-pipelines.yml | 58 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 azure-pipelines.yml diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..0e322a5 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,58 @@ +# Python Django +# Test a Django project on multiple versions of Python. +# Add steps that analyze code, save build artifacts, deploy, and more: +# https://docs.microsoft.com/azure/devops/pipelines/languages/python + +trigger: +- master + +pool: + vmImage: 'ubuntu-latest' +strategy: + matrix: + Python35: + PYTHON_VERSION: '3.5' + Python36: + PYTHON_VERSION: '3.6' + Python37: + PYTHON_VERSION: '3.7' + maxParallel: 3 + +steps: +- task: UsePythonVersion@0 + inputs: + versionSpec: '$(PYTHON_VERSION)' + architecture: 'x64' + +- task: PythonScript@0 + displayName: 'Export project path' + inputs: + scriptSource: 'inline' + script: | + """Search all subdirectories for `manage.py`.""" + from glob import iglob + from os import path + # Python >= 3.5 + manage_py = next(iglob(path.join('**', 'manage.py'), recursive=True), None) + if not manage_py: + raise SystemExit('Could not find a Django project') + project_location = path.dirname(path.abspath(manage_py)) + print('Found Django project in', project_location) + print('##vso[task.setvariable variable=projectRoot]{}'.format(project_location)) + +- script: | + python -m pip install --upgrade pip setuptools wheel + pip install -r requirements.txt + pip install unittest-xml-reporting + displayName: 'Install prerequisites' + +- script: | + pushd '$(projectRoot)' + python manage.py test --testrunner xmlrunner.extra.djangotestrunner.XMLTestRunner --no-input + displayName: 'Run tests' + +- task: PublishTestResults@2 + inputs: + testResultsFiles: "**/TEST-*.xml" + testRunTitle: 'Python $(PYTHON_VERSION)' + condition: succeededOrFailed()