VSTS: Skip build steps when only docs have changed (GH-8546)
This commit is contained in:
parent
8b58468032
commit
b221c93d4c
|
@ -23,21 +23,35 @@ steps:
|
|||
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(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
|
||||
condition: and(and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')), ne(variables['NoDocs'], 'true'))
|
||||
inputs:
|
||||
PathToPublish: '$(build.sourcesDirectory)/Doc/build'
|
||||
ArtifactName: build
|
||||
|
|
|
@ -27,12 +27,24 @@ steps:
|
|||
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
|
||||
|
||||
# See https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted-templates.md
|
||||
# For now, we copy/paste the steps
|
||||
- script: echo "deb-src http://archive.ubuntu.com/ubuntu/ xenial main" > /etc/apt/sources.list.d/python.list && sudo apt-get update
|
||||
displayName: 'Update apt-get lists'
|
||||
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
|
||||
|
||||
- script: echo ##vso[task.prependpath]$(OPENSSL_DIR)
|
||||
displayName: 'Add $(OPENSSL_DIR) to PATH'
|
||||
|
@ -55,24 +67,32 @@ steps:
|
|||
uuid-dev
|
||||
xvfb
|
||||
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'))
|
||||
|
|
|
@ -27,15 +27,29 @@ steps:
|
|||
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
|
||||
|
||||
# See https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted-templates.md
|
||||
# For now, we copy/paste the steps
|
||||
- script: echo "deb-src http://archive.ubuntu.com/ubuntu/ xenial main" > /etc/apt/sources.list.d/python.list && sudo apt-get update
|
||||
displayName: 'Update apt-get lists'
|
||||
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
|
||||
|
||||
- script: echo ##vso[task.prependpath]$(OPENSSL_DIR)
|
||||
displayName: 'Add $(OPENSSL_DIR) to PATH'
|
||||
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
|
||||
|
||||
- script: >
|
||||
sudo apt-get -yq install
|
||||
build-essential
|
||||
|
@ -55,22 +69,30 @@ steps:
|
|||
uuid-dev
|
||||
xvfb
|
||||
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"
|
||||
displayName: 'Tests'
|
||||
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
|
||||
|
|
|
@ -24,14 +24,32 @@ steps:
|
|||
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"
|
||||
displayName: 'Tests'
|
||||
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
|
||||
|
|
|
@ -37,13 +37,25 @@ steps:
|
|||
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
|
||||
displayName: 'Tests'
|
||||
env:
|
||||
PREFIX: $(Py_OutDir)\$(outDirSuffix)
|
||||
condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
|
||||
|
|
Loading…
Reference in New Issue