mirror of https://github.com/Qiskit/qiskit.git
824 lines
30 KiB
YAML
824 lines
30 KiB
YAML
# 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:
|
|
branches:
|
|
include:
|
|
- main
|
|
- stable/*
|
|
tags:
|
|
include:
|
|
- '*'
|
|
pr:
|
|
autoCancel: true
|
|
branches:
|
|
include:
|
|
- '*' # must quote since "*" is a YAML reserved character; we want a string
|
|
|
|
|
|
stages:
|
|
- stage: 'Wheel_Builds'
|
|
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
|
|
jobs:
|
|
- job: 'linux'
|
|
pool: {vmImage: 'Ubuntu-16.04'}
|
|
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
|
|
variables:
|
|
python.version: '3.7'
|
|
CIBW_BEFORE_BUILD: pip install -U Cython
|
|
CIBW_SKIP: cp27-* cp34-* cp35-* pp*
|
|
TWINE_USERNAME: qiskit
|
|
CIBW_TEST_COMMAND: python {project}/examples/python/stochastic_swap.py
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip
|
|
pip install cibuildwheel==1.11.0
|
|
pip install -U twine
|
|
cibuildwheel --output-dir wheelhouse .
|
|
- task: PublishBuildArtifacts@1
|
|
inputs: {pathtoPublish: 'wheelhouse'}
|
|
condition: succeededOrFailed()
|
|
- bash: |
|
|
twine upload wheelhouse/*
|
|
env:
|
|
TWINE_PASSWORD: $(TWINE_PASSWORD)
|
|
- job: 'sdist'
|
|
pool: {vmImage: 'Ubuntu-16.04'}
|
|
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
|
|
variables:
|
|
TWINE_USERNAME: qiskit
|
|
python.version: '3.7'
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip
|
|
pip install -U twine
|
|
python setup.py sdist
|
|
- task: PublishBuildArtifacts@1
|
|
inputs: {pathtoPublish: 'dist'}
|
|
condition: succeededOrFailed()
|
|
- bash: |
|
|
twine upload dist/*
|
|
env:
|
|
TWINE_PASSWORD: $(TWINE_PASSWORD)
|
|
- job: 'macos'
|
|
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
|
|
pool: {vmImage: 'macOS-latest'}
|
|
variables:
|
|
python.version: '3.7'
|
|
CIBW_BEFORE_BUILD: pip install -U Cython
|
|
CIBW_SKIP: cp27-* cp34-* cp35-* pp*
|
|
TWINE_USERNAME: qiskit
|
|
CIBW_TEST_COMMAND: python {project}/examples/python/stochastic_swap.py
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip
|
|
pip install cibuildwheel==1.11.0
|
|
pip install -U twine
|
|
cibuildwheel --output-dir wheelhouse .
|
|
- task: PublishBuildArtifacts@1
|
|
inputs: {pathtoPublish: 'wheelhouse'}
|
|
condition: succeededOrFailed()
|
|
- bash: |
|
|
twine upload wheelhouse/*
|
|
env:
|
|
TWINE_PASSWORD: $(TWINE_PASSWORD)
|
|
- job: 'macos_arm'
|
|
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
|
|
pool: {vmImage: 'macOS-latest'}
|
|
variables:
|
|
python.version: '3.7'
|
|
CIBW_BEFORE_BUILD: pip install -U Cython
|
|
CIBW_SKIP: cp27-* cp34-* cp35-* pp*
|
|
CIBW_ARCHS_MACOS: universal2
|
|
TWINE_USERNAME: qiskit
|
|
CIBW_TEST_COMMAND: python {project}/examples/python/stochastic_swap.py
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip
|
|
pip install cibuildwheel==1.11.0
|
|
pip install -U twine
|
|
cibuildwheel --output-dir wheelhouse .
|
|
- task: PublishBuildArtifacts@1
|
|
inputs: {pathtoPublish: 'wheelhouse'}
|
|
condition: succeededOrFailed()
|
|
- bash: |
|
|
twine upload wheelhouse/*
|
|
env:
|
|
TWINE_PASSWORD: $(TWINE_PASSWORD)
|
|
- job: 'Windows'
|
|
pool: {vmImage: 'vs2017-win2016'}
|
|
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
|
|
variables:
|
|
CIBW_BEFORE_BUILD: pip install -U Cython
|
|
CIBW_SKIP: cp27-* cp34-* cp35-* pp*
|
|
TWINE_USERNAME: qiskit
|
|
CIBW_TEST_COMMAND: python {project}\examples\python\stochastic_swap.py
|
|
steps:
|
|
- {task: UsePythonVersion@0, inputs: {versionSpec: '3.6', architecture: x86}}
|
|
- {task: UsePythonVersion@0, inputs: {versionSpec: '3.6', architecture: x64}}
|
|
- {task: UsePythonVersion@0, inputs: {versionSpec: '3.7', architecture: x86}}
|
|
- {task: UsePythonVersion@0, inputs: {versionSpec: '3.7', architecture: x64}}
|
|
- {task: UsePythonVersion@0, inputs: {versionSpec: '3.8', architecture: x86}}
|
|
- {task: UsePythonVersion@0, inputs: {versionSpec: '3.8', architecture: x64}}
|
|
- {task: UsePythonVersion@0, inputs: {versionSpec: '3.9', architecture: x86}}
|
|
- {task: UsePythonVersion@0, inputs: {versionSpec: '3.9', architecture: x64}}
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip
|
|
pip install cibuildwheel==1.11.0
|
|
pip install -U twine
|
|
cibuildwheel --output-dir wheelhouse
|
|
- task: PublishBuildArtifacts@1
|
|
inputs: {pathtoPublish: 'wheelhouse'}
|
|
condition: succeededOrFailed()
|
|
- script: |
|
|
twine upload wheelhouse\*
|
|
env:
|
|
TWINE_PASSWORD: $(TWINE_PASSWORD)
|
|
- stage: 'Lint_and_Tests'
|
|
dependsOn: []
|
|
jobs:
|
|
- job: 'Linux_Tests'
|
|
pool: {vmImage: 'ubuntu-latest'}
|
|
strategy:
|
|
matrix:
|
|
Python37:
|
|
python.version: '3.7'
|
|
variables:
|
|
QISKIT_SUPPRESS_PACKAGING_WARNINGS: Y
|
|
PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip
|
|
QISKIT_TEST_CAPTURE_STREAMS: 1
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
inputs:
|
|
versionSpec: '$(python.version)'
|
|
displayName: 'Use Python $(python.version)'
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'pip | "$(Agent.OS)" | "$(python.version)" |"$(Build.BuildNumber)"'
|
|
restoreKeys: |
|
|
pip | "$(Agent.OS)" | "$(python.version)"
|
|
pip | "$(Agent.OS)"
|
|
pip
|
|
path: $(PIP_CACHE_DIR)
|
|
displayName: Cache pip
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'stestr | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
|
|
restoreKeys: |
|
|
stestr | "$(Agent.OS)" | "$(python.version)"
|
|
stestr | "$(Agent.OS)"
|
|
stestr
|
|
path: .stestr
|
|
displayName: Cache stestr
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip setuptools wheel virtualenv
|
|
virtualenv test-job
|
|
source test-job/bin/activate
|
|
pip install -U -r requirements.txt -r requirements-dev.txt -c constraints.txt
|
|
python setup.py sdist
|
|
pip install -U -c constraints.txt dist/qiskit-terra*.tar.gz
|
|
pip install -U "qiskit-aer" "z3-solver" -c constraints.txt
|
|
mkdir -p /tmp/terra-tests
|
|
cp -r test /tmp/terra-tests/.
|
|
cp .stestr.conf /tmp/terra-tests/.
|
|
sudo apt install -y graphviz
|
|
pip check
|
|
displayName: 'Install dependencies'
|
|
- bash: |
|
|
set -e
|
|
source test-job/bin/activate
|
|
pushd /tmp/terra-tests
|
|
export PYTHONHASHSEED=$(python -S -c "import random; print(random.randint(1, 4294967295))")
|
|
echo "PYTHONHASHSEED=$PYTHONHASHSEED"
|
|
stestr run
|
|
popd
|
|
displayName: 'Run tests'
|
|
- task: CopyFiles@2
|
|
condition: failed()
|
|
displayName: 'Copy images'
|
|
inputs:
|
|
contents: '**/*.png'
|
|
targetFolder: $(Build.ArtifactStagingDirectory)
|
|
- task: PublishBuildArtifacts@1
|
|
condition: failed()
|
|
displayName: 'Publish images'
|
|
inputs:
|
|
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
|
artifactName: 'drop_linux'
|
|
- bash: |
|
|
set -e
|
|
source test-job/bin/activate
|
|
cp tools/subunit_to_junit.py /tmp/terra-tests/.
|
|
pip install -U junitxml
|
|
pushd /tmp/terra-tests
|
|
mkdir -p junit
|
|
stestr last --subunit | ./subunit_to_junit.py -o junit/test-results.xml
|
|
popd
|
|
cp -r /tmp/terra-tests/junit .
|
|
pushd .stestr
|
|
ls | grep -P "^\d" | xargs -d "\n" rm -f
|
|
popd
|
|
condition: succeededOrFailed()
|
|
displayName: 'Generate results'
|
|
- task: PublishTestResults@2
|
|
condition: succeededOrFailed()
|
|
inputs:
|
|
testResultsFiles: '**/test-*.xml'
|
|
testRunTitle: 'Test results for Linux Python $(python.version)'
|
|
- job: 'Lint'
|
|
pool: {vmImage: 'ubuntu-latest'}
|
|
strategy:
|
|
matrix:
|
|
Python37:
|
|
python.version: '3.7'
|
|
variables:
|
|
PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
inputs:
|
|
versionSpec: '$(python.version)'
|
|
displayName: 'Use Python $(python.version)'
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'pip | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
|
|
restoreKeys: |
|
|
pip | "$(Agent.OS)" | "$(python.version)"
|
|
pip | "$(Agent.OS)"
|
|
pip
|
|
path: $(PIP_CACHE_DIR)
|
|
displayName: Cache pip
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip setuptools wheel virtualenv
|
|
virtualenv test-job
|
|
source test-job/bin/activate
|
|
pip install -U -r requirements.txt -r requirements-dev.txt -c constraints.txt
|
|
pip install -U -c constraints.txt -e .
|
|
pip install -U "qiskit-aer" -c constraints.txt
|
|
python setup.py build_ext --inplace
|
|
displayName: 'Install dependencies'
|
|
- bash: |
|
|
set -e
|
|
source test-job/bin/activate
|
|
black --check qiskit test tools examples setup.py
|
|
pylint -rn qiskit test
|
|
tools/verify_headers.py qiskit test
|
|
python tools/find_optional_imports.py
|
|
reno lint
|
|
displayName: 'Style and lint'
|
|
- job: 'MacOS_Catalina_Tests'
|
|
pool: {vmImage: 'macOS-latest'}
|
|
strategy:
|
|
matrix:
|
|
Python37:
|
|
python.version: '3.7'
|
|
variables:
|
|
QISKIT_SUPPRESS_PACKAGING_WARNINGS: Y
|
|
PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip
|
|
QISKIT_TEST_CAPTURE_STREAMS: 1
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
inputs:
|
|
versionSpec: '$(python.version)'
|
|
displayName: 'Use Python $(python.version)'
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'pip | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
|
|
restoreKeys: |
|
|
pip | "$(Agent.OS)" | "$(python.version)"
|
|
pip | "$(Agent.OS)"
|
|
pip
|
|
path: $(PIP_CACHE_DIR)
|
|
displayName: Cache pip
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'stestr | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
|
|
restoreKeys: |
|
|
stestr | "$(Agent.OS)" | "$(python.version)"
|
|
stestr | "$(Agent.OS)"
|
|
stestr
|
|
path: .stestr
|
|
displayName: Cache stestr
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip setuptools wheel virtualenv
|
|
virtualenv test-job
|
|
source test-job/bin/activate
|
|
pip install -U -r requirements.txt -r requirements-dev.txt -c constraints.txt
|
|
pip install -U -c constraints.txt -e .
|
|
pip install -U "qiskit-aer" -c constraints.txt
|
|
python setup.py build_ext --inplace
|
|
pip check
|
|
displayName: 'Install dependencies'
|
|
- bash: |
|
|
set -e
|
|
source test-job/bin/activate
|
|
export PYTHONHASHSEED=$(python -S -c "import random; print(random.randint(1, 4294967295))")
|
|
echo "PYTHONHASHSEED=$PYTHONHASHSEED"
|
|
stestr run
|
|
displayName: 'Run tests'
|
|
- task: CopyFiles@2
|
|
condition: failed()
|
|
displayName: 'Copy images'
|
|
inputs:
|
|
contents: '**/*.png'
|
|
targetFolder: $(Build.ArtifactStagingDirectory)
|
|
- task: PublishBuildArtifacts@1
|
|
condition: failed()
|
|
displayName: 'Publish images'
|
|
inputs:
|
|
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
|
artifactName: 'drop_macos'
|
|
- bash: |
|
|
set -e
|
|
source test-job/bin/activate
|
|
pip install -U junitxml
|
|
mkdir -p junit
|
|
stestr last --subunit | tools/subunit_to_junit.py -o junit/test-results.xml
|
|
pushd .stestr
|
|
ls | grep -e '^[[:digit:]]' | xargs -n1 rm -f
|
|
popd
|
|
condition: succeededOrFailed()
|
|
displayName: 'Generate results'
|
|
- task: PublishTestResults@2
|
|
condition: succeededOrFailed()
|
|
inputs:
|
|
testResultsFiles: '**/test-*.xml'
|
|
testRunTitle: 'Test results for macOS Python $(python.version)'
|
|
- job: 'Windows_Tests'
|
|
pool: {vmImage: 'windows-latest'}
|
|
strategy:
|
|
matrix:
|
|
Python37:
|
|
python.version: '3.7'
|
|
variables:
|
|
QISKIT_SUPPRESS_PACKAGING_WARNINGS: Y
|
|
QISKIT_TEST_CAPTURE_STREAMS: 1
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
inputs:
|
|
versionSpec: '$(python.version)'
|
|
displayName: 'Use Python $(python.version)'
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'stestr | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
|
|
restoreKeys: |
|
|
stestr | "$(Agent.OS)" | "$(python.version)"
|
|
stestr | "$(Agent.OS)"
|
|
stestr
|
|
path: .stestr
|
|
displayName: Cache stestr
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip setuptools wheel virtualenv
|
|
virtualenv test-job
|
|
source test-job/Scripts/activate
|
|
pip install -r requirements.txt -r requirements-dev.txt -c constraints.txt
|
|
pip install -c constraints.txt -e .
|
|
pip install "z3-solver" -c constraints.txt
|
|
python setup.py build_ext --inplace
|
|
pip check
|
|
displayName: 'Install dependencies'
|
|
- bash: |
|
|
set -e
|
|
chcp.com 65001
|
|
source test-job/Scripts/activate
|
|
export PYTHONHASHSEED=$(python -S -c "import random; print(random.randint(1, 1024))")
|
|
echo "PYTHONHASHSEED=$PYTHONHASHSEED"
|
|
stestr run
|
|
displayName: 'Run tests'
|
|
env:
|
|
LANG: 'C.UTF-8'
|
|
PYTHONIOENCODING: 'utf-8:backslashreplace'
|
|
- task: CopyFiles@2
|
|
condition: failed()
|
|
displayName: 'Copy images'
|
|
inputs:
|
|
contents: '**/*.png'
|
|
targetFolder: $(Build.ArtifactStagingDirectory)
|
|
- task: PublishBuildArtifacts@1
|
|
condition: failed()
|
|
displayName: 'Publish images'
|
|
inputs:
|
|
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
|
artifactName: 'drop_windows'
|
|
- bash: |
|
|
set -e
|
|
chcp.com 65001
|
|
source test-job/Scripts/activate
|
|
pip install -U junitxml
|
|
mkdir -p junit
|
|
stestr last --subunit | python tools/subunit_to_junit.py -o junit/test-results.xml
|
|
pushd .stestr
|
|
ls | grep -P "^\d" | xargs -d "\n" rm -f
|
|
popd
|
|
condition: succeededOrFailed()
|
|
env:
|
|
LANG: 'C.UTF-8'
|
|
PYTHONIOENCODING: 'utf-8:backslashreplace'
|
|
displayName: 'Generate results'
|
|
- task: PublishTestResults@2
|
|
condition: succeededOrFailed()
|
|
inputs:
|
|
testResultsFiles: '**/test-*.xml'
|
|
testRunTitle: 'Test results for Windows Python $(python.version)'
|
|
- stage: 'Python_Tests'
|
|
condition: and(succeeded('Lint_and_Tests'), not(startsWith(variables['Build.SourceBranch'], 'refs/tags')))
|
|
jobs:
|
|
- job: 'Windows_Tests'
|
|
pool: {vmImage: 'windows-latest'}
|
|
strategy:
|
|
matrix:
|
|
Python36:
|
|
python.version: '3.6'
|
|
Python38:
|
|
python.version: '3.8'
|
|
Python39:
|
|
python.version: '3.9'
|
|
variables:
|
|
QISKIT_SUPPRESS_PACKAGING_WARNINGS: Y
|
|
QISKIT_TEST_CAPTURE_STREAMS: 1
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
inputs:
|
|
versionSpec: '$(python.version)'
|
|
displayName: 'Use Python $(python.version)'
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'stestr | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
|
|
restoreKeys: |
|
|
stestr | "$(Agent.OS)" | "$(python.version)"
|
|
stestr | "$(Agent.OS)"
|
|
stestr
|
|
path: .stestr
|
|
displayName: Cache stestr
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip setuptools wheel virtualenv
|
|
virtualenv test-job
|
|
source test-job/Scripts/activate
|
|
pip install -r requirements.txt -r requirements-dev.txt -c constraints.txt
|
|
pip install -c constraints.txt -e .
|
|
pip install "z3-solver" -c constraints.txt
|
|
python setup.py build_ext --inplace
|
|
pip check
|
|
displayName: 'Install dependencies'
|
|
- bash: |
|
|
set -e
|
|
chcp.com 65001
|
|
source test-job/Scripts/activate
|
|
export PYTHONHASHSEED=$(python -S -c "import random; print(random.randint(1, 1024))")
|
|
echo "PYTHONHASHSEED=$PYTHONHASHSEED"
|
|
stestr run
|
|
env:
|
|
LANG: 'C.UTF-8'
|
|
PYTHONIOENCODING: 'utf-8:backslashreplace'
|
|
displayName: 'Run tests'
|
|
- task: CopyFiles@2
|
|
condition: failed()
|
|
displayName: 'Copy images'
|
|
inputs:
|
|
contents: '**/*.png'
|
|
targetFolder: $(Build.ArtifactStagingDirectory)
|
|
- task: PublishBuildArtifacts@1
|
|
condition: failed()
|
|
displayName: 'Publish images'
|
|
inputs:
|
|
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
|
artifactName: 'drop_windows'
|
|
- bash: |
|
|
set -e
|
|
chcp.com 65001
|
|
source test-job/Scripts/activate
|
|
pip install -U junitxml
|
|
mkdir -p junit
|
|
stestr last --subunit | python tools/subunit_to_junit.py -o junit/test-results.xml
|
|
pushd .stestr
|
|
ls | grep -P "^\d" | xargs -d "\n" rm -f
|
|
popd
|
|
condition: succeededOrFailed()
|
|
env:
|
|
LANG: 'C.UTF-8'
|
|
PYTHONIOENCODING: 'utf-8:backslashreplace'
|
|
displayName: 'Generate results'
|
|
- task: PublishTestResults@2
|
|
condition: succeededOrFailed()
|
|
inputs:
|
|
testResultsFiles: '**/test-*.xml'
|
|
testRunTitle: 'Test results for Windows Python $(python.version)'
|
|
- job: 'Linux_Tests'
|
|
pool: {vmImage: 'ubuntu-latest'}
|
|
strategy:
|
|
matrix:
|
|
Python36:
|
|
python.version: '3.6'
|
|
Python38:
|
|
python.version: '3.8'
|
|
Python39:
|
|
python.version: '3.9'
|
|
variables:
|
|
QISKIT_SUPPRESS_PACKAGING_WARNINGS: Y
|
|
PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip
|
|
QISKIT_TEST_CAPTURE_STREAMS: 1
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
inputs:
|
|
versionSpec: '$(python.version)'
|
|
displayName: 'Use Python $(python.version)'
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'pip | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
|
|
restoreKeys: |
|
|
pip | "$(Agent.OS)" | "$(python.version)"
|
|
pip | "$(Agent.OS)"
|
|
pip
|
|
path: $(PIP_CACHE_DIR)
|
|
displayName: Cache pip
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'stestr | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
|
|
restoreKeys: |
|
|
stestr | "$(Agent.OS)" | "$(python.version)"
|
|
stestr | "$(Agent.OS)"
|
|
stestr
|
|
path: .stestr
|
|
displayName: Cache stestr
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip setuptools wheel virtualenv
|
|
virtualenv test-job
|
|
source test-job/bin/activate
|
|
pip install -U -r requirements.txt -r requirements-dev.txt -c constraints.txt
|
|
pip install -U -c constraints.txt -e .
|
|
pip install -U "qiskit-aer" "z3-solver" -c constraints.txt
|
|
python setup.py build_ext --inplace
|
|
sudo apt install -y graphviz
|
|
pip check
|
|
displayName: 'Install dependencies'
|
|
- bash: |
|
|
set -e
|
|
source test-job/bin/activate
|
|
export PYTHONHASHSEED=$(python -S -c "import random; print(random.randint(1, 4294967295))")
|
|
echo "PYTHONHASHSEED=$PYTHONHASHSEED"
|
|
stestr run
|
|
displayName: 'Run tests'
|
|
- task: CopyFiles@2
|
|
condition: failed()
|
|
displayName: 'Copy images'
|
|
inputs:
|
|
contents: '**/*.png'
|
|
targetFolder: $(Build.ArtifactStagingDirectory)
|
|
- task: PublishBuildArtifacts@1
|
|
condition: failed()
|
|
displayName: 'Publish images'
|
|
inputs:
|
|
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
|
artifactName: 'drop_linux'
|
|
- bash: |
|
|
set -e
|
|
source test-job/bin/activate
|
|
pip install -U junitxml
|
|
mkdir -p junit
|
|
stestr last --subunit | tools/subunit_to_junit.py -o junit/test-results.xml
|
|
pushd .stestr
|
|
ls | grep -P "^\d" | xargs -d "\n" rm -f
|
|
popd
|
|
condition: succeededOrFailed()
|
|
displayName: 'Generate results'
|
|
- task: PublishTestResults@2
|
|
condition: succeededOrFailed()
|
|
inputs:
|
|
testResultsFiles: '**/test-*.xml'
|
|
testRunTitle: 'Test results for Linux Python $(python.version)'
|
|
- job: 'MacOS_Catalina_Tests'
|
|
pool: {vmImage: 'macOS-latest'}
|
|
strategy:
|
|
matrix:
|
|
Python36:
|
|
python.version: '3.6'
|
|
Python38:
|
|
python.version: '3.8'
|
|
Python39:
|
|
python.version: '3.9'
|
|
variables:
|
|
QISKIT_SUPPRESS_PACKAGING_WARNINGS: Y
|
|
PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip
|
|
QISKIT_TEST_CAPTURE_STREAMS: 1
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
inputs:
|
|
versionSpec: '$(python.version)'
|
|
displayName: 'Use Python $(python.version)'
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'pip | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
|
|
restoreKeys: |
|
|
pip | "$(Agent.OS)" | "$(python.version)"
|
|
pip | "$(Agent.OS)"
|
|
pip
|
|
path: $(PIP_CACHE_DIR)
|
|
displayName: Cache pip
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'stestr | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
|
|
restoreKeys: |
|
|
stestr | "$(Agent.OS)" | "$(python.version)"
|
|
stestr | "$(Agent.OS)"
|
|
stestr
|
|
path: .stestr
|
|
displayName: Cache stestr
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip setuptools wheel virtualenv
|
|
virtualenv test-job
|
|
source test-job/bin/activate
|
|
pip install -U -r requirements.txt -r requirements-dev.txt -c constraints.txt
|
|
pip install -U -c constraints.txt -e .
|
|
python setup.py build_ext --inplace
|
|
pip check
|
|
displayName: 'Install dependencies'
|
|
- bash: |
|
|
set -e
|
|
source test-job/bin/activate
|
|
export PYTHONHASHSEED=$(python -S -c "import random; print(random.randint(1, 4294967295))")
|
|
echo "PYTHONHASHSEED=$PYTHONHASHSEED"
|
|
stestr run
|
|
displayName: 'Run tests'
|
|
- task: CopyFiles@2
|
|
condition: failed()
|
|
displayName: 'Copy images'
|
|
inputs:
|
|
contents: '**/*.png'
|
|
targetFolder: $(Build.ArtifactStagingDirectory)
|
|
- task: PublishBuildArtifacts@1
|
|
condition: failed()
|
|
displayName: 'Publish images'
|
|
inputs:
|
|
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
|
artifactName: 'drop_macos'
|
|
- bash: |
|
|
set -e
|
|
source test-job/bin/activate
|
|
pip install -U junitxml
|
|
mkdir -p junit
|
|
stestr last --subunit | tools/subunit_to_junit.py -o junit/test-results.xml
|
|
pushd .stestr
|
|
ls | grep -e '^[[:digit:]]' | xargs -n1 rm -f
|
|
popd
|
|
condition: succeededOrFailed()
|
|
displayName: 'Generate results'
|
|
- task: PublishTestResults@2
|
|
condition: succeededOrFailed()
|
|
inputs:
|
|
testResultsFiles: '**/test-*.xml'
|
|
testRunTitle: 'Test results for macOS Python $(python.version)'
|
|
- stage: 'Docs_and_Tutorials'
|
|
condition: and(succeeded('Python_Tests'), not(startsWith(variables['Build.SourceBranch'], 'refs/tags')))
|
|
jobs:
|
|
- job: 'Docs'
|
|
pool: {vmImage: 'ubuntu-latest'}
|
|
strategy:
|
|
matrix:
|
|
Python37:
|
|
python.version: '3.7'
|
|
variables:
|
|
PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip
|
|
steps:
|
|
- checkout: self
|
|
- task: UsePythonVersion@0
|
|
inputs:
|
|
versionSpec: '$(python.version)'
|
|
displayName: 'Use Python $(python.version)'
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'pip | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
|
|
restoreKeys: |
|
|
pip | "$(Agent.OS)" | "$(python.version)"
|
|
pip | "$(Agent.OS)"
|
|
pip
|
|
path: $(PIP_CACHE_DIR)
|
|
displayName: Cache pip
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip setuptools wheel
|
|
pip install -U tox
|
|
python setup.py build_ext --inplace
|
|
sudo apt install -y graphviz
|
|
displayName: 'Install dependencies'
|
|
- bash: |
|
|
tox -edocs
|
|
displayName: 'Run Docs build'
|
|
- task: ArchiveFiles@2
|
|
inputs:
|
|
rootFolderOrFile: 'docs/_build/html'
|
|
archiveType: tar
|
|
archiveFile: '$(Build.ArtifactStagingDirectory)/html_docs.tar.gz'
|
|
verbose: true
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish docs'
|
|
inputs:
|
|
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
|
artifactName: 'html_docs'
|
|
Parallel: true
|
|
ParallelCount: 8
|
|
- job: 'Tutorials'
|
|
pool: {vmImage: 'ubuntu-latest'}
|
|
strategy:
|
|
matrix:
|
|
Python38:
|
|
python.version: '3.8'
|
|
variables:
|
|
QISKIT_SUPPRESS_PACKAGING_WARNINGS: Y
|
|
PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip
|
|
QISKIT_CELL_TIMEOUT: 300
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
inputs:
|
|
versionSpec: '$(python.version)'
|
|
displayName: 'Use Python $(python.version)'
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'pip | "$(Agent.OS)" | "$(python.version)"'
|
|
restoreKeys: |
|
|
pip | "$(Agent.OS)"
|
|
pip
|
|
path: $(PIP_CACHE_DIR)
|
|
displayName: Cache pip
|
|
- bash: |
|
|
set -e
|
|
git clone https://github.com/Qiskit/qiskit-tutorials --depth=1
|
|
python -m pip install --upgrade pip
|
|
pip install -U -r requirements.txt -r requirements-dev.txt -c constraints.txt
|
|
pip install -c constraints.txt -e .
|
|
# TODO: Remove aqua and ignis from source after next aqua release
|
|
pip install "qiskit-ibmq-provider" "qiskit-aer" "z3-solver" "git+https://github.com/Qiskit/qiskit-ignis" "git+https://github.com/Qiskit/qiskit-aqua" "pyscf<1.7.4" "matplotlib<3.3.0" sphinx nbsphinx sphinx_rtd_theme cvxpy -c constraints.txt
|
|
python setup.py build_ext --inplace
|
|
sudo apt install -y graphviz pandoc
|
|
pip check
|
|
displayName: 'Install dependencies'
|
|
- bash: |
|
|
set -e
|
|
cd qiskit-tutorials
|
|
sphinx-build -b html . _build/html
|
|
env:
|
|
QISKIT_PARALLEL: False
|
|
- task: ArchiveFiles@2
|
|
inputs:
|
|
rootFolderOrFile: 'qiskit-tutorials/_build/html'
|
|
archiveType: tar
|
|
archiveFile: '$(Build.ArtifactStagingDirectory)/html_tutorials.tar.gz'
|
|
verbose: true
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish docs'
|
|
inputs:
|
|
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
|
artifactName: 'html_tutorials'
|
|
Parallel: true
|
|
ParallelCount: 8
|
|
- job: 'Image_tests'
|
|
pool: {vmImage: 'ubuntu-latest'}
|
|
strategy:
|
|
matrix:
|
|
Python38:
|
|
python.version: '3.8'
|
|
variables:
|
|
QISKIT_SUPPRESS_PACKAGING_WARNINGS: Y
|
|
PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip
|
|
steps:
|
|
- task: UsePythonVersion@0
|
|
inputs:
|
|
versionSpec: '$(python.version)'
|
|
displayName: 'Use Python $(python.version)'
|
|
- task: Cache@2
|
|
inputs:
|
|
key: 'pip | "$(Agent.OS)" | "$(python.version)"'
|
|
restoreKeys: |
|
|
pip | "$(Agent.OS)"
|
|
pip
|
|
path: $(PIP_CACHE_DIR)
|
|
displayName: Cache pip
|
|
- bash: |
|
|
set -e
|
|
python -m pip install --upgrade pip
|
|
pip install -U -r requirements.txt -c constraints.txt
|
|
pip install -U -c constraints.txt -e .
|
|
pip install -U "matplotlib<3.3.0" pylatexenc pillow
|
|
python setup.py build_ext --inplace
|
|
sudo apt install -y graphviz pandoc
|
|
pip check
|
|
displayName: 'Install dependencies'
|
|
- bash: python -m unittest discover -v test/ipynb
|
|
displayName: 'Run image test'
|