trigger: tags: include: - v* branches: include: - "*" exclude: - "travis" stages: - stage: "Test" jobs: - job: Windows pool: vmImage: "vs2017-win2016" strategy: matrix: Python36: python.version: "3.6" Python37: python.version: "3.7" Python38: python.version: "3.8" steps: - task: UsePythonVersion@0 inputs: versionSpec: "$(python.version)" - pwsh: | choco install --yes --no-progress --pre tesseract choco install --yes --no-progress python3 choco install --yes --no-progress ghostscript choco install --yes --no-progress pngquant displayName: "Install system packages" - pwsh: | refreshenv python -m pip install --upgrade pip wheel python -m pip install -r requirements/main.txt -r requirements/test.txt . displayName: "Install Python packages" - pwsh: | refreshenv $env:pathext += ';.py' # -n auto helps Windows python -m pytest -n auto --junitxml=test.xml --cov=ocrmypdf --cov-report=xml displayName: "Test" - task: PublishTestResults@2 inputs: testResultsFiles: "test.xml" testRunTitle: "$(Agent.OS) - $(Build.DefinitionName) - Python $(python.version)" condition: succeededOrFailed() - job: "Ubuntu_1804" pool: vmImage: "ubuntu-18.04" strategy: matrix: Python36: python.version: "3.6" Python37: python.version: "3.7" Python38: python.version: "3.8" steps: - task: UsePythonVersion@0 inputs: versionSpec: "$(python.version)" - bash: | sudo apt-get update sudo apt-get install -y --no-install-recommends \ python3-software-properties \ curl \ ghostscript \ img2pdf \ libexempi3 \ libffi-dev \ liblept5 \ libsm6 libxext6 libxrender-dev \ pngquant \ poppler-utils \ tesseract-ocr \ tesseract-ocr-deu \ tesseract-ocr-eng \ unpaper \ zlib1g displayName: "Install system packages" - bash: | curl https://bootstrap.pypa.io/get-pip.py | python3 pip3 install -r requirements/main.txt -r requirements/test.txt . displayName: "Install Python packages" - bash: | tesseract --version displayName: "Record versions" - bash: | # -n auto is slower on Linux and breaks on Python 3.8 pytest -n0 --junitxml=test.xml --cov=ocrmypdf --cov-report=xml displayName: "Test" - task: PublishTestResults@2 inputs: testResultsFiles: "test.xml" testRunTitle: "$(Agent.OS) - $(Build.DefinitionName) - Python $(python.version)" condition: succeededOrFailed() - job: "Ubuntu_1604" pool: vmImage: "ubuntu-16.04" strategy: matrix: Python36: python.version: "3.6" steps: - task: UsePythonVersion@0 inputs: versionSpec: "$(python.version)" - bash: | sudo apt-get update sudo apt-get install -y --no-install-recommends \ software-properties-common sudo add-apt-repository -y ppa:alex-p/tesseract-ocr sudo apt-get update sudo apt-get install -y --no-install-recommends \ ghostscript \ img2pdf \ libexempi3 \ libffi-dev \ liblept5 \ libsm6 libxext6 libxrender-dev \ pngquant \ poppler-utils \ tesseract-ocr \ tesseract-ocr-deu \ tesseract-ocr-eng \ unpaper \ zlib1g displayName: "Install system packages" - bash: | curl https://bootstrap.pypa.io/get-pip.py | python3 pip3 install -r requirements/main.txt -r requirements/test.txt . displayName: "Install Python packages" - bash: | tesseract --version displayName: "Record versions" - bash: | # -n auto is slower on Linux and breaks on Python 3.8 pytest -n0 --junitxml=test.xml --cov=ocrmypdf --cov-report=xml displayName: "Test" - task: PublishTestResults@2 inputs: testResultsFiles: "test.xml" testRunTitle: "$(Agent.OS) - $(Build.DefinitionName) - Python $(python.version)" condition: succeededOrFailed() - job: "macOS_Mojave" pool: vmImage: "macos-10.14" steps: # https://github.com/actions/virtual-environments/issues/664 # - task: UsePythonVersion@0 # inputs: # versionSpec: "$(python.version)" - bash: | brew update brew unlink python@2 brew upgrade python echo "Using Python `python3 --version`" displayName: "Update brew and Python" - bash: | brew install \ exempi \ ghostscript \ jbig2enc \ leptonica \ openjpeg \ pngquant \ tesseract \ unpaper displayName: "Install system packages" - bash: | pip3 install --upgrade pip pip3 install -r requirements/main.txt -r requirements/test.txt . displayName: "Install Python packages" - bash: | tesseract --version displayName: "Record versions" - bash: pytest -nauto --junitxml=test.xml --cov=ocrmypdf --cov-report=xml displayName: "Test" - task: PublishTestResults@2 inputs: testResultsFiles: "test.xml" testRunTitle: "$(Agent.OS) - $(Build.DefinitionName) - Python $(python.version)" condition: succeededOrFailed() - task: PublishCodeCoverageResults@1 inputs: codeCoverageTool: Cobertura summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/coverage.xml" - stage: "Artifacts" jobs: - job: "sdist_wheel" pool: vmImage: "ubuntu-18.04" steps: - task: UsePythonVersion@0 inputs: versionSpec: "3.7" - bash: | python -m pip install --upgrade pip wheel python setup.py sdist bdist_wheel - publish: dist artifact: sdist_wheel - stage: "Deploy" jobs: - deployment: "PyPI" pool: vmImage: "ubuntu-18.04" environment: "deploy" strategy: runOnce: deploy: steps: - download: current artifact: sdist_wheel - script: | mkdir -p dist mv $(Pipeline.Workspace)/sdist_wheel/* dist displayName: "Move dist files" - task: UsePythonVersion@0 inputs: versionSpec: "3.8" architecture: x64 - script: | pip install --upgrade twine displayName: "Generate artifacts" - script: | cat <.pypirc [distutils] index-servers = pypi [pypi] username: __token__ password: $(TOKEN_PYPI) FILE displayName: "Generate PyPI auth file" - script: | python -m twine upload --config-file .pypirc dist/* displayName: "Upload to PyPI" condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/')) - script: | curl -X POST -d "token=$(TOKEN_RTD)" https://readthedocs.org/api/v2/webhook/pikepdf/39557/ displayName: "Trigger ReadTheDocs" condition: and(succeeded(), or(startsWith(variables['Build.SourceBranch'], 'refs/tags/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master')))