bpo-34582: Update syntax of Azure Pipelines builds (GH-9521)

This commit is contained in:
Steve Dower 2018-09-24 07:44:50 -04:00 committed by GitHub
parent 2d3ff2b5ea
commit 57675090b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 503 additions and 542 deletions

136
.azure-pipelines/ci.yml Normal file
View File

@ -0,0 +1,136 @@
variables:
manylinux: false
coverage: false
jobs:
- job: Prebuild
displayName: Pre-build checks
pool:
vmImage: ubuntu-16.04
steps:
- template: ./prebuild-checks.yml
- job: Docs_PR
displayName: Docs PR
dependsOn: Prebuild
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['docs.run'], 'true'))
pool:
vmImage: ubuntu-16.04
steps:
- template: ./docs-steps.yml
parameters:
upload: true
- job: macOS_CI_Tests
displayName: macOS CI Tests
dependsOn: Prebuild
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
variables:
testRunTitle: '$(build.sourceBranchName)-macos'
testRunPlatform: macos
pool:
vmImage: xcode9-macos10.13
steps:
- template: ./macos-steps.yml
- job: Ubuntu_CI_Tests
displayName: Ubuntu CI Tests
dependsOn: Prebuild
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
pool:
vmImage: ubuntu-16.04
variables:
testRunTitle: '$(build.sourceBranchName)-linux'
testRunPlatform: linux
openssl_version: 1.1.0g
steps:
- template: ./posix-steps.yml
- job: ManyLinux1_CI_Tests
displayName: ManyLinux1 CI Tests
dependsOn: Prebuild
condition: |
and(
and(
succeeded(),
eq(variables['manylinux'], 'true')
),
eq(dependencies.Prebuild.outputs['tests.run'], 'true')
)
pool:
vmImage: ubuntu-16.04
variables:
testRunTitle: '$(build.sourceBranchName)-manylinux1'
testRunPlatform: manylinux1
imageName: 'dockcross/manylinux-x64'
steps:
- template: ./docker-steps.yml
- job: Ubuntu_Coverage_CI_Tests
displayName: Ubuntu CI Tests (coverage)
dependsOn: Prebuild
condition: |
and(
and(
succeeded(),
eq(variables['coverage'], 'true')
),
eq(dependencies.Prebuild.outputs['tests.run'], 'true')
)
pool:
vmImage: ubuntu-16.04
variables:
testRunTitle: '$(Build.SourceBranchName)-linux-coverage'
testRunPlatform: linux-coverage
openssl_version: 1.1.0g
steps:
- template: ./posix-steps.yml
parameters:
coverage: true
- job: Windows_CI_Tests
displayName: Windows CI Tests
dependsOn: Prebuild
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
pool:
vmImage: vs2017-win2017
strategy:
matrix:
win32:
arch: win32
buildOpt:
testRunTitle: '$(Build.SourceBranchName)-win32'
testRunPlatform: win32
win64:
arch: amd64
buildOpt: '-p x64'
testRunTitle: '$(Build.SourceBranchName)-win64'
testRunPlatform: win64
maxParallel: 2
steps:
- template: ./windows-steps.yml

View File

@ -0,0 +1,76 @@
steps:
- checkout: self
clean: true
fetchDepth: 5
- ${{ if ne(parameters.targetBranch, '') }}:
- script: |
git fetch -q origin ${{ parameters.targetbranch }}
if ! git diff --name-only HEAD $(git merge-base HEAD FETCH_HEAD) | grep -qvE '(\.rst$|^Doc|^Misc)'
then
echo "Only docs were updated, stopping build process."
echo "##vso[task.setvariable variable=DocOnly]true"
exit
fi
displayName: Detect doc-only changes
- task: docker@0
displayName: 'Configure CPython (debug)'
inputs:
action: 'Run an image'
imageName: $(imageName)
volumes: |
$(build.sourcesDirectory):/src
$(build.binariesDirectory):/build
workDir: '/src'
containerCommand: './configure --with-pydebug'
detached: false
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- task: docker@0
displayName: 'Build CPython'
inputs:
action: 'Run an image'
imageName: $(imageName)
volumes: |
$(build.sourcesDirectory):/src
$(build.binariesDirectory):/build
workDir: '/src'
containerCommand: 'make -s -j4'
detached: false
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- task: docker@0
displayName: 'Display build info'
inputs:
action: 'Run an image'
imageName: $(imageName)
volumes: |
$(build.sourcesDirectory):/src
$(build.binariesDirectory):/build
workDir: '/src'
containerCommand: 'make pythoninfo'
detached: false
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- task: docker@0
displayName: 'Tests'
inputs:
action: 'Run an image'
imageName: $(imageName)
volumes: |
$(build.sourcesDirectory):/src
$(build.binariesDirectory):/build
workDir: '/src'
containerCommand: 'make buildbottest TESTOPTS="-j4 -uall,-cpu --junit-xml=/build/test-results.xml"'
detached: false
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFiles: '$(build.binariesDirectory)/test-results.xml'
mergeTestResults: true
testRunTitle: $(testRunTitle)
platform: $(testRunPlatform)
condition: and(succeededOrFailed(), ne(variables['DocOnly'], 'true'))

View File

@ -0,0 +1,46 @@
parameters:
latex: false
upload: false
steps:
- checkout: self
clean: true
fetchDepth: 5
- task: UsePythonVersion@0
displayName: 'Use Python 3.6 or later'
inputs:
versionSpec: '>=3.6'
- script: python -m pip install sphinx~=1.6.1 blurb python-docs-theme
displayName: 'Install build dependencies'
- ${{ if ne(parameters.latex, 'true') }}:
- script: make check suspicious html PYTHON=python
workingDirectory: '$(build.sourcesDirectory)/Doc'
displayName: 'Build documentation'
- ${{ if eq(parameters.latex, 'true') }}:
- script: sudo apt-get update && sudo apt-get install -qy --force-yes texlive-full
displayName: 'Install LaTeX'
- script: make dist PYTHON=python SPHINXBUILD='python -m sphinx' BLURB='python -m blurb'
workingDirectory: '$(build.sourcesDirectory)/Doc'
displayName: 'Build documentation'
- ${{ if eq(parameters.upload, 'true') }}:
- task: PublishBuildArtifacts@1
displayName: 'Publish docs'
inputs:
PathToPublish: '$(build.sourcesDirectory)/Doc/build'
ArtifactName: docs
publishLocation: Container
- ${{ if eq(parameters.latex, 'true') }}:
- task: PublishBuildArtifacts@1
displayName: 'Publish dist'
inputs:
PathToPublish: '$(build.sourcesDirectory)/Doc/dist'
ArtifactName: docs_dist
publishLocation: Container

View File

@ -1,30 +1,9 @@
# Current docs for the syntax of this file are at:
# https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
queue:
name: Hosted macOS
trigger:
branches:
include:
- master
- 3.7
- 3.6
paths:
exclude:
- Doc/*
- Tools/*
#variables:
steps: steps:
- checkout: self - checkout: self
clean: true clean: true
fetchDepth: 5 fetchDepth: 5
- script: ./configure --with-pydebug --with-openssl=/usr/local/opt/openssl --prefix=/opt/python-vsts - script: ./configure --with-pydebug --with-openssl=/usr/local/opt/openssl --prefix=/opt/python-azdev
displayName: 'Configure CPython (debug)' displayName: 'Configure CPython (debug)'
- script: make -s -j4 - script: make -s -j4
@ -41,6 +20,6 @@ steps:
inputs: inputs:
testResultsFiles: '$(build.binariesDirectory)/test-results.xml' testResultsFiles: '$(build.binariesDirectory)/test-results.xml'
mergeTestResults: true mergeTestResults: true
testRunTitle: '$(build.sourceBranchName)-macOS' testRunTitle: $(testRunTitle)
platform: macOS platform: $(testRunPlatform)
condition: succeededOrFailed() condition: succeededOrFailed()

View File

@ -1,4 +1,4 @@
sudo apt-get update || true sudo apt-get update
sudo apt-get -yq install \ sudo apt-get -yq install \
build-essential \ build-essential \
@ -17,3 +17,10 @@ sudo apt-get -yq install \
libffi-dev \ libffi-dev \
uuid-dev \ uuid-dev \
xvfb xvfb
if [ ! -z "$1" ]
then
echo ##vso[task.prependpath]$PWD/multissl/openssl/$1
echo ##vso[task.setvariable variable=OPENSSL_DIR]$PWD/multissl/openssl/$1
python3 Tools/ssl/multissltests.py --steps=library --base-directory $PWD/multissl --openssl $1 --system Linux
fi

View File

@ -0,0 +1,63 @@
parameters:
coverage: false
steps:
- checkout: self
clean: true
fetchDepth: 5
- script: ./.azure-pipelines/posix-deps.sh $(openssl_version)
displayName: 'Install dependencies'
- script: ./configure --with-pydebug
displayName: 'Configure CPython (debug)'
- script: make -s -j4
displayName: 'Build CPython'
- ${{ if eq(parameters.coverage, 'true') }}:
- script: ./python -m venv venv && ./venv/bin/python -m pip install -U coverage
displayName: 'Set up virtual environment'
- script: ./venv/bin/python -m test.pythoninfo
displayName: 'Display build info'
- script: |
xvfb-run ./venv/bin/python -m coverage run --pylib -m test \
--fail-env-changed \
-uall,-cpu \
--junit-xml=$(build.binariesDirectory)/test-results.xml" \
-x test_multiprocessing_fork \
-x test_multiprocessing_forkserver \
-x test_multiprocessing_spawn \
-x test_concurrent_futures
displayName: 'Tests with coverage'
- script: ./venv/bin/python -m coverage xml
displayName: 'Generate coverage.xml'
- script: source ./venv/bin/activate && bash <(curl -s https://codecov.io/bash)
displayName: 'Publish code coverage results'
- ${{ if ne(parameters.coverage, 'true') }}:
- script: make pythoninfo
displayName: 'Display build info'
- script: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu --junit-xml=$(build.binariesDirectory)/test-results.xml"
displayName: 'Tests'
- script: python Tools/scripts/patchcheck.py --travis true
displayName: 'Run patchcheck.py'
condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFiles: '$(build.binariesDirectory)/test-results.xml'
mergeTestResults: true
testRunTitle: $(testRunTitle)
platform: $(testRunPlatform)
condition: succeededOrFailed()

86
.azure-pipelines/pr.yml Normal file
View File

@ -0,0 +1,86 @@
jobs:
- job: Prebuild
displayName: Pre-build checks
pool:
vmImage: ubuntu-16.04
steps:
- template: ./prebuild-checks.yml
- job: Docs_PR
displayName: Docs PR
dependsOn: Prebuild
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['docs.run'], 'true'))
pool:
vmImage: ubuntu-16.04
steps:
- template: ./docs-steps.yml
- job: macOS_PR_Tests
displayName: macOS PR Tests
dependsOn: Prebuild
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
variables:
testRunTitle: '$(system.pullRequest.TargetBranch)-macos'
testRunPlatform: macos
pool:
vmImage: xcode9-macos10.13
steps:
- template: ./macos-steps.yml
parameters:
targetBranch: $(System.PullRequest.TargetBranch)
- job: Ubuntu_PR_Tests
displayName: Ubuntu PR Tests
dependsOn: Prebuild
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
pool:
vmImage: ubuntu-16.04
variables:
testRunTitle: '$(system.pullRequest.TargetBranch)-linux'
testRunPlatform: linux
openssl_version: 1.1.0g
steps:
- template: ./posix-steps.yml
parameters:
targetBranch: $(System.PullRequest.TargetBranch)
- job: Windows_PR_Tests
displayName: Windows PR Tests
dependsOn: Prebuild
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
pool:
vmImage: vs2017-win2017
strategy:
matrix:
win32:
arch: win32
buildOpt:
testRunTitle: '$(System.PullRequest.TargetBranch)-win32'
testRunPlatform: win32
win64:
arch: amd64
buildOpt: '-p x64'
testRunTitle: '$(System.PullRequest.TargetBranch)-win64'
testRunPlatform: win64
maxParallel: 2
steps:
- template: ./windows-steps.yml
parameters:
targetBranch: $(System.PullRequest.TargetBranch)

View File

@ -0,0 +1,36 @@
steps:
- checkout: self
fetchDepth: 5
- script: echo "##vso[task.setvariable variable=diffTarget]HEAD~1"
displayName: Set default diff target
- script: |
git fetch -q origin $(System.PullRequest.TargetBranch)
echo "##vso[task.setvariable variable=diffTarget]HEAD \$(git merge-base HEAD FETCH_HEAD)"
displayName: Fetch comparison tree
condition: and(succeeded(), variables['System.PullRequest.TargetBranch'])
- script: |
if ! git diff --name-only $(diffTarget) | grep -qE '(\.rst$|^Doc|^Misc)'
then
echo "No docs were updated: docs.run=false"
echo "##vso[task.setvariable variable=run;isOutput=true]false"
else
echo "Docs were updated: docs.run=true"
echo "##vso[task.setvariable variable=run;isOutput=true]true"
fi
displayName: Detect documentation changes
name: docs
- script: |
if ! git diff --name-only $(diffTarget) | grep -qvE '(\.rst$|^Doc|^Misc)'
then
echo "Only docs were updated: tests.run=false"
echo "##vso[task.setvariable variable=run;isOutput=true]false"
else
echo "Code was updated: tests.run=true"
echo "##vso[task.setvariable variable=run;isOutput=true]true"
fi
displayName: Detect source changes
name: tests

View File

@ -0,0 +1,32 @@
steps:
- checkout: self
clean: true
fetchDepth: 5
- powershell: |
# Relocate build outputs outside of source directory to make cleaning faster
Write-Host '##vso[task.setvariable variable=Py_IntDir]$(Build.BinariesDirectory)\obj'
# UNDONE: Do not build to a different directory because of broken tests
Write-Host '##vso[task.setvariable variable=Py_OutDir]$(Build.SourcesDirectory)\PCbuild'
Write-Host '##vso[task.setvariable variable=EXTERNAL_DIR]$(Build.BinariesDirectory)\externals'
displayName: Update build locations
- script: PCbuild\build.bat -e $(buildOpt)
displayName: 'Build CPython'
- script: python.bat -m test.pythoninfo
displayName: 'Display build info'
- script: PCbuild\rt.bat -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0 --junit-xml="$(Build.BinariesDirectory)\test-results.xml"
displayName: 'Tests'
env:
PREFIX: $(Py_OutDir)\$(arch)
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFiles: '$(Build.BinariesDirectory)\test-results.xml'
mergeTestResults: true
testRunTitle: $(testRunTitle)
platform: $(testRunPlatform)
condition: succeededOrFailed()

View File

@ -1,43 +0,0 @@
# Current docs for the syntax of this file are at:
# https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
queue:
name: Hosted Linux Preview
#variables:
steps:
- checkout: self
clean: true
fetchDepth: 5
- script: sudo apt-get update && sudo apt-get install -qy --force-yes texlive-full
displayName: 'Install LaTeX'
- task: UsePythonVersion@0
displayName: 'Use Python 3.6 or later'
inputs:
versionSpec: '>=3.6'
- script: python -m pip install sphinx blurb python-docs-theme
displayName: 'Install build dependencies'
- script: make dist PYTHON=python SPHINXBUILD='python -m sphinx' BLURB='python -m blurb'
workingDirectory: '$(build.sourcesDirectory)/Doc'
displayName: 'Build documentation'
- task: PublishBuildArtifacts@1
displayName: 'Publish build'
inputs:
PathToPublish: '$(build.sourcesDirectory)/Doc/build'
ArtifactName: build
publishLocation: Container
- task: PublishBuildArtifacts@1
displayName: 'Publish dist'
inputs:
PathToPublish: '$(build.sourcesDirectory)/Doc/dist'
ArtifactName: dist
publishLocation: Container

View File

@ -1,58 +0,0 @@
# Current docs for the syntax of this file are at:
# https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
queue:
name: 'Hosted Ubuntu 1604'
trigger:
branches:
include:
- master
- 3.7
- 3.6
paths:
include:
- Doc/*
#variables:
steps:
- checkout: self
clean: true
fetchDepth: 5
- script: |
git fetch -q origin $(system.pullRequest.targetBranch)
if ! git diff --name-only HEAD $(git merge-base HEAD FETCH_HEAD) | grep -qE '(\.rst$|^Doc|^Misc)'
then
echo "No docs were updated, stopping build process."
echo "##vso[task.setvariable variable=NoDocs]true"
exit
fi
displayName: Detect doc-only changes
condition: and(succeeded(), variables['system.pullRequest.targetBranch'])
- task: UsePythonVersion@0
displayName: 'Use Python 3.6 or later'
inputs:
versionSpec: '>=3.6'
condition: and(succeeded(), ne(variables['NoDocs'], 'true'))
- script: python -m pip install sphinx~=1.6.1 blurb python-docs-theme
displayName: 'Install build dependencies'
condition: and(succeeded(), ne(variables['NoDocs'], 'true'))
- script: make check suspicious html PYTHON=python
workingDirectory: '$(build.sourcesDirectory)/Doc'
displayName: 'Build documentation'
condition: and(succeeded(), ne(variables['NoDocs'], 'true'))
- task: PublishBuildArtifacts@1
displayName: 'Publish build'
condition: and(and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')), ne(variables['NoDocs'], 'true'))
inputs:
PathToPublish: '$(build.sourcesDirectory)/Doc/build'
ArtifactName: build
publishLocation: Container

View File

@ -1,59 +0,0 @@
# Current docs for the syntax of this file are at:
# https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
queue:
name: 'Hosted Ubuntu 1604'
trigger:
branches:
include:
- master
- 3.7
- 3.6
paths:
exclude:
- Doc/*
- Tools/*
variables:
# Copy-pasted from linux-deps.yml until template support arrives
OPENSSL: 1.1.0g
OPENSSL_DIR: "$(build.sourcesDirectory)/multissl/openssl/$(OPENSSL)"
steps:
- checkout: self
clean: true
fetchDepth: 5
#- template: linux-deps.yml
- script: echo ##vso[task.prependpath]$(OPENSSL_DIR)
displayName: 'Add $(OPENSSL_DIR) to PATH'
- script: ./.vsts/install_deps.sh
displayName: 'Install dependencies'
- script: python3 Tools/ssl/multissltests.py --steps=library --base-directory $(build.sourcesDirectory)/multissl --openssl $(OPENSSL) --system Linux
displayName: 'python multissltests.py'
- script: ./configure --with-pydebug
displayName: 'Configure CPython (debug)'
- script: make -s -j4
displayName: 'Build CPython'
- script: make pythoninfo
displayName: 'Display build info'
- script: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu --junit-xml=$(build.binariesDirectory)/test-results.xml"
displayName: 'Tests'
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFiles: '$(build.binariesDirectory)/test-results.xml'
mergeTestResults: true
testRunTitle: '$(build.sourceBranchName)-linux'
platform: linux
condition: succeededOrFailed()

View File

@ -1,75 +0,0 @@
# Current docs for the syntax of this file are at:
# https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
queue:
name: 'Hosted Ubuntu 1604'
trigger:
branches:
include:
- master
- 3.7
- 3.6
paths:
exclude:
- Doc/*
- Tools/*
variables:
# Copy-pasted from linux-deps.yml until template support arrives
OPENSSL: 1.1.0g
OPENSSL_DIR: "$(build.sourcesDirectory)/multissl/openssl/$(OPENSSL)"
steps:
- checkout: self
clean: true
fetchDepth: 5
- script: |
git fetch -q origin $(system.pullRequest.targetBranch)
if ! git diff --name-only HEAD $(git merge-base HEAD FETCH_HEAD) | grep -qvE '(\.rst$|^Doc|^Misc)'
then
echo "Only docs were updated, stopping build process."
echo "##vso[task.setvariable variable=DocOnly]true"
exit
fi
displayName: Detect doc-only changes
condition: and(succeeded(), variables['system.pullRequest.targetBranch'])
#- template: linux-deps.yml
- script: echo ##vso[task.prependpath]$(OPENSSL_DIR)
displayName: 'Add $(OPENSSL_DIR) to PATH'
- script: ./.vsts/install_deps.sh
displayName: 'Install dependencies'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: python3 Tools/ssl/multissltests.py --steps=library --base-directory $(build.sourcesDirectory)/multissl --openssl $(OPENSSL) --system Linux
displayName: 'python multissltests.py'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: ./configure --with-pydebug
displayName: 'Configure CPython (debug)'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: make -s -j4
displayName: 'Build CPython'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: ./python -m venv venv && ./venv/bin/python -m pip install -U coverage
displayName: 'Set up virtual environment'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: ./venv/bin/python -m test.pythoninfo
displayName: 'Display build info'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: xvfb-run ./venv/bin/python -m coverage run --pylib -m test --fail-env-changed -uall,-cpu -x test_multiprocessing_fork -x test_multiprocessing_forkserver -x test_multiprocessing_spawn -x test_concurrent_futures
displayName: 'Tests with coverage'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: source ./venv/bin/activate && bash <(curl -s https://codecov.io/bash)
displayName: 'Publish code coverage results'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))

View File

@ -1,84 +0,0 @@
# Current docs for the syntax of this file are at:
# https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
queue:
name: 'Hosted Ubuntu 1604'
trigger:
branches:
include:
- master
- 3.7
- 3.6
paths:
exclude:
- Doc/*
- Tools/*
variables:
# Copy-pasted from linux-deps.yml until template support arrives
OPENSSL: 1.1.0g
OPENSSL_DIR: "$(build.sourcesDirectory)/multissl/openssl/$(OPENSSL)"
steps:
- checkout: self
clean: true
fetchDepth: 5
- script: |
git fetch -q origin $(system.pullRequest.targetBranch)
if ! git diff --name-only HEAD $(git merge-base HEAD FETCH_HEAD) | grep -qvE '(\.rst$|^Doc|^Misc)'
then
echo "Only docs were updated, stopping build process."
echo "##vso[task.setvariable variable=DocOnly]true"
exit
fi
displayName: Detect doc-only changes
condition: and(succeeded(), variables['system.pullRequest.targetBranch'])
#- template: linux-deps.yml
- script: echo ##vso[task.prependpath]$(OPENSSL_DIR)
displayName: 'Add $(OPENSSL_DIR) to PATH'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: ./.vsts/install_deps.sh
displayName: 'Install dependencies'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: python3 Tools/ssl/multissltests.py --steps=library --base-directory $(build.sourcesDirectory)/multissl --openssl $(OPENSSL) --system Linux
displayName: 'python multissltests.py'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: ./configure --with-pydebug
displayName: 'Configure CPython (debug)'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: make -s -j4
displayName: 'Build CPython'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: make pythoninfo
displayName: 'Display build info'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
# Run patchcheck and fail if anything is discovered
- script: ./python Tools/scripts/patchcheck.py --travis true
displayName: 'Run patchcheck.py'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu --junit-xml=$(build.binariesDirectory)/test-results.xml"
displayName: 'Tests'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFiles: '$(build.binariesDirectory)/test-results.xml'
mergeTestResults: true
testRunTitle: '$(system.pullRequest.targetBranch)-linux'
platform: linux
condition: and(succeededOrFailed(), ne(variables['DocOnly'], 'true'))

View File

@ -1,64 +0,0 @@
# Current docs for the syntax of this file are at:
# https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
queue:
name: Hosted macOS
trigger:
branches:
include:
- master
- 3.7
- 3.6
paths:
exclude:
- Doc/*
- Tools/*
#variables:
steps:
- checkout: self
clean: true
fetchDepth: 5
- script: |
git fetch -q origin $(system.pullRequest.targetBranch)
changes = $(git diff --name-only HEAD $(git merge-base HEAD FETCH_HEAD))
echo "Files changed:"
echo "$changes"
if ! echo "$changes" | grep -qvE '(\.rst$)|(^Doc)|(^Misc)'
then
echo "Only docs were updated, stopping build process."
echo "##vso[task.setvariable variable=DocOnly]true"
exit
fi
displayName: Detect doc-only changes
condition: and(succeeded(), variables['system.pullRequest.targetBranch'])
- script: ./configure --with-pydebug --with-openssl=/usr/local/opt/openssl --prefix=/opt/python-vsts
displayName: 'Configure CPython (debug)'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: make -s -j4
displayName: 'Build CPython'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: make pythoninfo
displayName: 'Display build info'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: make buildbottest TESTOPTS="-j4 -uall,-cpu --junit-xml=$(build.binariesDirectory)/test-results.xml"
displayName: 'Tests'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFiles: '$(build.binariesDirectory)/test-results.xml'
mergeTestResults: true
testRunTitle: '$(system.pullRequest.targetBranch)-macOS'
platform: macOS
condition: and(succeededOrFailed(), ne(variables['DocOnly'], 'true'))

View File

@ -1,58 +0,0 @@
# Current docs for the syntax of this file are at:
# https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
queue:
name: Hosted VS2017
parallel: 2
matrix:
amd64:
buildOpt: -p x64
outDirSuffix: amd64
win32:
buildOpt:
outDirSuffix: win32
trigger:
branches:
include:
- master
- 3.7
- 3.6
paths:
exclude:
- Doc/*
- Tools/*
variables:
# Relocate build outputs outside of source directory to make cleaning faster
Py_IntDir: $(Build.BinariesDirectory)\obj
# UNDONE: Do not build to a different directory because of broken tests
Py_OutDir: $(Build.SourcesDirectory)\PCbuild
EXTERNAL_DIR: $(Build.BinariesDirectory)\externals
steps:
- checkout: self
clean: true
fetchDepth: 5
- script: PCbuild\build.bat -e $(buildOpt)
displayName: 'Build CPython'
- script: python.bat -m test.pythoninfo
displayName: 'Display build info'
- script: PCbuild\rt.bat -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0 --junit-xml="$(Build.BinariesDirectory)\test-results.xml"
displayName: 'Tests'
env:
PREFIX: $(Py_OutDir)\$(outDirSuffix)
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFiles: '$(Build.BinariesDirectory)\test-results.xml'
mergeTestResults: true
testRunTitle: '$(Build.SourceBranchName)-$(outDirSuffix)'
platform: $(outDirSuffix)
condition: succeededOrFailed()

View File

@ -1,70 +0,0 @@
# Current docs for the syntax of this file are at:
# https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
queue:
name: Hosted VS2017
parallel: 2
matrix:
amd64:
buildOpt: -p x64
outDirSuffix: amd64
win32:
buildOpt:
outDirSuffix: win32
trigger:
branches:
include:
- master
- 3.7
- 3.6
paths:
exclude:
- Doc/*
- Tools/*
variables:
# Relocate build outputs outside of source directory to make cleaning faster
Py_IntDir: $(Build.BinariesDirectory)\obj
# UNDONE: Do not build to a different directory because of broken tests
Py_OutDir: $(Build.SourcesDirectory)\PCbuild
EXTERNAL_DIR: $(Build.BinariesDirectory)\externals
steps:
- checkout: self
clean: true
fetchDepth: 5
- powershell: |
git fetch -q origin $(System.PullRequest.TargetBranch)
if (-not (git diff --name-only HEAD (git merge-base HEAD FETCH_HEAD) | sls -NotMatch '(\.rst$)|(^Doc)|(^Misc)')) {
Write-Host 'Only docs were updated. Skipping build'
Write-Host '##vso[task.setvariable variable=DocOnly]true'
}
displayName: Detect doc-only changes
condition: and(succeeded(), variables['System.PullRequest.TargetBranch'])
- script: PCbuild\build.bat -e $(buildOpt)
displayName: 'Build CPython'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: python.bat -m test.pythoninfo
displayName: 'Display build info'
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: PCbuild\rt.bat -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0 --junit-xml="$(Build.BinariesDirectory)\test-results.xml"
displayName: 'Tests'
env:
PREFIX: $(Py_OutDir)\$(outDirSuffix)
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFiles: '$(Build.BinariesDirectory)\test-results.xml'
mergeTestResults: true
testRunTitle: '$(System.PullRequest.TargetBranch)-$(outDirSuffix)'
platform: $(outDirSuffix)
condition: and(succeededOrFailed(), ne(variables['DocOnly'], 'true'))

View File

@ -436,18 +436,29 @@ class CompressObjectTestCase(BaseCompressTestCase, unittest.TestCase):
# Test flush() with the various options, using all the # Test flush() with the various options, using all the
# different levels in order to provide more variations. # different levels in order to provide more variations.
sync_opt = ['Z_NO_FLUSH', 'Z_SYNC_FLUSH', 'Z_FULL_FLUSH', sync_opt = ['Z_NO_FLUSH', 'Z_SYNC_FLUSH', 'Z_FULL_FLUSH',
'Z_PARTIAL_FLUSH', 'Z_BLOCK'] 'Z_PARTIAL_FLUSH']
ver = tuple(int(v) for v in zlib.ZLIB_RUNTIME_VERSION.split('.'))
# Z_BLOCK has a known failure prior to 1.2.5.3
if ver >= (1, 2, 5, 3):
sync_opt.append('Z_BLOCK')
sync_opt = [getattr(zlib, opt) for opt in sync_opt sync_opt = [getattr(zlib, opt) for opt in sync_opt
if hasattr(zlib, opt)] if hasattr(zlib, opt)]
data = HAMLET_SCENE * 8 data = HAMLET_SCENE * 8
for sync in sync_opt: for sync in sync_opt:
for level in range(10): for level in range(10):
try:
obj = zlib.compressobj( level ) obj = zlib.compressobj( level )
a = obj.compress( data[:3000] ) a = obj.compress( data[:3000] )
b = obj.flush( sync ) b = obj.flush( sync )
c = obj.compress( data[3000:] ) c = obj.compress( data[3000:] )
d = obj.flush() d = obj.flush()
except:
print("Error for flush mode={}, level={}"
.format(sync, level))
raise
self.assertEqual(zlib.decompress(b''.join([a,b,c,d])), self.assertEqual(zlib.decompress(b''.join([a,b,c,d])),
data, ("Decompress failed: flush " data, ("Decompress failed: flush "
"mode=%i, level=%i") % (sync, level)) "mode=%i, level=%i") % (sync, level))