summaryrefslogtreecommitdiff
path: root/.azure-pipelines
diff options
context:
space:
mode:
authorBrian Cristante <brcrista@microsoft.com>2018-08-24 16:09:32 -0400
committerBrian Cristante <brcrista@microsoft.com>2018-09-14 17:36:12 -0700
commit60ff4a663c8172dca6d6b37f00fbcd6e7a669fa8 (patch)
treeaa0cf50277ee6fec1d7084947d6a6b467142a8a4 /.azure-pipelines
parentf4bda78815bc9144255dc5ed29a89d97a54b131a (diff)
downloadpip-60ff4a663c8172dca6d6b37f00fbcd6e7a669fa8.tar.gz
Add Azure Pipelines configuration
Diffstat (limited to '.azure-pipelines')
-rw-r--r--.azure-pipelines/jobs/package.yml37
-rw-r--r--.azure-pipelines/jobs/test.yml73
-rw-r--r--.azure-pipelines/linux.yml8
-rw-r--r--.azure-pipelines/macos.yml8
-rw-r--r--.azure-pipelines/steps/install-dependencies.yml3
-rw-r--r--.azure-pipelines/steps/run-tests-windows.yml37
-rw-r--r--.azure-pipelines/steps/run-tests.yml24
-rw-r--r--.azure-pipelines/windows.yml8
8 files changed, 198 insertions, 0 deletions
diff --git a/.azure-pipelines/jobs/package.yml b/.azure-pipelines/jobs/package.yml
new file mode 100644
index 000000000..f8e9d7abd
--- /dev/null
+++ b/.azure-pipelines/jobs/package.yml
@@ -0,0 +1,37 @@
+parameters:
+ vmImage:
+
+jobs:
+- job: Package
+ dependsOn:
+ - Test_Primary
+ - Test_Secondary
+ pool:
+ vmImage: ${{ parameters.vmImage }}
+
+ steps:
+ - task: UsePythonVersion@0
+ displayName: Use Python 3 latest
+ inputs:
+ versionSpec: '3'
+
+ - bash: pip install setuptools tox wheel invoke towncrier
+ displayName: Install dependencies
+
+ - bash: invoke generate.authors
+ displayName: Generate AUTHORS.txt
+
+ - bash: invoke generate.news --yes
+ displayName: Generate NEWS.rst
+
+ - bash: tox -e packaging
+ displayName: Run Tox packaging
+
+ - bash: python setup.py sdist bdist_wheel
+ displayName: Create sdist and wheel
+
+ - task: PublishBuildArtifacts@1
+ displayName: 'Publish Artifact: dist'
+ inputs:
+ pathtoPublish: dist
+ artifactName: dist
diff --git a/.azure-pipelines/jobs/test.yml b/.azure-pipelines/jobs/test.yml
new file mode 100644
index 000000000..47a286c0e
--- /dev/null
+++ b/.azure-pipelines/jobs/test.yml
@@ -0,0 +1,73 @@
+parameters:
+ vmImage:
+
+jobs:
+- job: Test_Primary
+ displayName: Test Primary
+
+ pool:
+ vmImage: ${{ parameters.vmImage }}
+ strategy:
+ matrix:
+ Python27:
+ python.version: '2.7'
+ python.architecture: x64
+ Python36:
+ python.version: '3.6'
+ python.architecture: x64
+ maxParallel: 2
+
+ steps:
+ - ${{ if eq(parameters.vmImage, 'vs2017-win2017') }}:
+ - template: ../steps/run-tests-windows.yml
+ parameters:
+ runIntegrationTests: true
+
+ - ${{ if ne(parameters.vmImage, 'vs2017-win2017') }}:
+ - template: ../steps/run-tests.yml
+
+- job: Test_Secondary
+ displayName: Test Secondary
+ # Run after Test_Primary so we don't devour time and jobs if tests are going to fail
+ dependsOn: Test_Primary
+
+ pool:
+ vmImage: ${{ parameters.vmImage }}
+ strategy:
+ matrix:
+ Python34:
+ python.version: '3.4'
+ python.architecture: x64
+ Python35:
+ python.version: '3.5'
+ python.architecture: x64
+ Python37:
+ python.version: '3.7'
+ python.architecture: x64
+ # On Windows, test x86 builds
+ ${{ if eq(parameters.vmImage, 'vs2017-win2017') }}:
+ Python27-x86:
+ python.version: '2.7'
+ python.architecture: x86
+ Python34-x86:
+ python.version: '3.4'
+ python.architecture: x86
+ Python35-x86:
+ python.version: '3.5'
+ python.architecture: x86
+ Python36-x86:
+ python.version: '3.6'
+ python.architecture: x86
+ Python37-x86:
+ python.version: '3.7'
+ python.architecture: x86
+ maxParallel: 5
+
+ steps:
+ - ${{ if eq(parameters.vmImage, 'vs2017-win2017') }}:
+ - template: ../steps/run-tests-windows.yml
+ parameters:
+ runIntegrationTests: false
+
+ - ${{ if ne(parameters.vmImage, 'vs2017-win2017') }}:
+ - template: ../steps/run-tests.yml
diff --git a/.azure-pipelines/linux.yml b/.azure-pipelines/linux.yml
new file mode 100644
index 000000000..6965a15fc
--- /dev/null
+++ b/.azure-pipelines/linux.yml
@@ -0,0 +1,8 @@
+jobs:
+- template: jobs/test.yml
+ parameters:
+ vmImage: ubuntu-16.04
+
+- template: jobs/package.yml
+ parameters:
+ vmImage: ubuntu-16.04
diff --git a/.azure-pipelines/macos.yml b/.azure-pipelines/macos.yml
new file mode 100644
index 000000000..7408a3884
--- /dev/null
+++ b/.azure-pipelines/macos.yml
@@ -0,0 +1,8 @@
+jobs:
+- template: jobs/test.yml
+ parameters:
+ vmImage: xcode9-macos10.13
+
+- template: jobs/package.yml
+ parameters:
+ vmImage: xcode9-macos10.13
diff --git a/.azure-pipelines/steps/install-dependencies.yml b/.azure-pipelines/steps/install-dependencies.yml
new file mode 100644
index 000000000..8946a5568
--- /dev/null
+++ b/.azure-pipelines/steps/install-dependencies.yml
@@ -0,0 +1,3 @@
+steps:
+- bash: pip install --upgrade setuptools tox
+ displayName: Install dependencies \ No newline at end of file
diff --git a/.azure-pipelines/steps/run-tests-windows.yml b/.azure-pipelines/steps/run-tests-windows.yml
new file mode 100644
index 000000000..f01edbe34
--- /dev/null
+++ b/.azure-pipelines/steps/run-tests-windows.yml
@@ -0,0 +1,37 @@
+parameters:
+ runIntegrationTests:
+
+steps:
+- task: UsePythonVersion@0
+ displayName: Use Python $(python.version)
+ inputs:
+ versionSpec: '$(python.version)'
+ architecture: '$(python.architecture)'
+
+- template: install-dependencies.yml
+
+- script: tox -e py -- -m unit -n 3 --junit-xml=junit/unit-test.xml
+ displayName: Tox run unit tests
+
+- ${{ if eq(parameters.runIntegrationTests, 'true') }}:
+ - powershell: |
+ # Fix Git SSL errors
+ pip install certifi tox
+ python -m certifi > cacert.txt
+ $env:GIT_SSL_CAINFO = $(Get-Content cacert.txt)
+
+ # Shorten paths to get under MAX_PATH or else integration tests will fail
+ # https://bugs.python.org/issue18199
+ subst T: $env:TEMP
+ $env:TEMP = "T:\"
+ $env:TMP = "T:\"
+
+ tox -e py -- -m integration -n 3 --duration=5 --junit-xml=junit/integration-test.xml
+ displayName: Tox run integration tests
+
+- task: PublishTestResults@2
+ displayName: Publish Test Results
+ inputs:
+ testResultsFiles: junit/*.xml
+ testRunTitle: 'Python $(python.version)'
+ condition: succeededOrFailed()
diff --git a/.azure-pipelines/steps/run-tests.yml b/.azure-pipelines/steps/run-tests.yml
new file mode 100644
index 000000000..588445b99
--- /dev/null
+++ b/.azure-pipelines/steps/run-tests.yml
@@ -0,0 +1,24 @@
+steps:
+- task: UsePythonVersion@0
+ displayName: Use Python $(python.version)
+ inputs:
+ versionSpec: '$(python.version)'
+
+- template: install-dependencies.yml
+
+- script: tox -e py -- -m unit --junit-xml=junit/unit-test.xml
+ displayName: Tox run unit tests
+
+# Run integration tests in two groups so we will fail faster if there is a failure in the first group
+- script: tox -e py -- -m integration -n 4 --duration=5 -k "not test_install" --junit-xml=junit/integration-test-group0.xml
+ displayName: Tox run Group 0 integration tests
+
+- script: tox -e py -- -m integration -n 4 --duration=5 -k "test_install" --junit-xml=junit/integration-test-group1.xml
+ displayName: Tox run Group 1 integration tests
+
+- task: PublishTestResults@2
+ displayName: Publish Test Results
+ inputs:
+ testResultsFiles: junit/*.xml
+ testRunTitle: 'Python $(python.version)'
+ condition: succeededOrFailed() \ No newline at end of file
diff --git a/.azure-pipelines/windows.yml b/.azure-pipelines/windows.yml
new file mode 100644
index 000000000..21f307484
--- /dev/null
+++ b/.azure-pipelines/windows.yml
@@ -0,0 +1,8 @@
+jobs:
+- template: jobs/test.yml
+ parameters:
+ vmImage: vs2017-win2017
+
+- template: jobs/package.yml
+ parameters:
+ vmImage: vs2017-win2017