From 7eb3f8226ea7b79dae4e4e8b05730cfe0d9af7c1 Mon Sep 17 00:00:00 2001 From: Zachary Ware Date: Sun, 18 Feb 2018 10:19:37 -0600 Subject: [PATCH] Clean up Travis config (GH-5727) --- .travis.yml | 102 +++++++++++++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 49 deletions(-) diff --git a/.travis.yml b/.travis.yml index 665b266146a..ab43318975f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,10 +5,10 @@ group: beta # To cache doc-building dependencies and C compiler output. cache: - - pip - - ccache - - directories: - - $HOME/multissl + - pip + - ccache + - directories: + - $HOME/multissl env: global: @@ -26,6 +26,7 @@ branches: only: - master - /^\d\.\d$/ + - buildbot-custom matrix: fast_finish: true @@ -56,22 +57,12 @@ matrix: compiler: gcc env: OPTIONAL=true before_script: - - | - if ! git diff --name-only $TRAVIS_COMMIT_RANGE | grep -qvE '(\.rst$)|(^Doc)|(^Misc)' - then - echo "Only docs were updated, stopping build process." - exit - fi - python3 Tools/ssl/multissltests.py --steps=library \ - --base-directory ${HOME}/multissl \ - --openssl ${OPENSSL} >/dev/null - openssl version - ./configure - make -s -j4 - # Need a venv that can parse covered code. - ./python -m venv venv - ./venv/bin/python -m pip install -U coverage - ./venv/bin/python -m test.pythoninfo + - ./configure + - make -s -j4 + # Need a venv that can parse covered code. + - ./python -m venv venv + - ./venv/bin/python -m pip install -U coverage + - ./venv/bin/python -m test.pythoninfo script: # Skip tests that re-run the entire test suite. - ./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 @@ -80,47 +71,60 @@ matrix: - source ./venv/bin/activate - bash <(curl -s https://codecov.io/bash) -# Travis provides only 2 cores, so don't overdo the parallelism and waste memory. -before_script: + +before_install: + - set -e - | - set -e - if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then - files_changed=$(git diff --name-only $TRAVIS_COMMIT_RANGE) - else - # Pull requests are slightly complicated because merging the PR commit without - # rebasing causes it to retain its old commit date. Meaning in history if any - # commits have been made on master that post-date it, they will be accidentally - # included in the diff if we use the TRAVIS_COMMIT_RANGE variable. - files_changed=$(git diff --name-only HEAD $(git merge-base HEAD $TRAVIS_BRANCH)) - fi - - # Prints changed files in this commit to help debug doc-only build issues. - echo "Files changed: " - echo $files_changed - - if ! echo "$files_changed" | grep -qvE '(\.rst$)|(^Doc)|(^Misc)' + # Check short-circuit conditions + if [ "${TESTING}" != "docs" ] then - echo "Only docs were updated, stopping build process." - exit + if [ "$TRAVIS_PULL_REQUEST" = "false" ] + then + echo "Not a PR, doing full build." + else + # Pull requests are slightly complicated because $TRAVIS_COMMIT_RANGE + # may include more changes than desired if the history is convoluted. + # Instead, explicitly fetch the base branch and compare against the + # merge-base commit. + git fetch -q origin +refs/heads/$TRAVIS_BRANCH + 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." + exit + fi + fi fi - if [ "${TESTING}" != "docs" ]; then + +install: + - | + # Install OpenSSL as necessary + if [ "${TESTING}" != "docs" ] + then # clang complains about unused-parameter a lot, redirect stderr python3 Tools/ssl/multissltests.py --steps=library \ --base-directory ${HOME}/multissl \ --openssl ${OPENSSL} >/dev/null 2>&1 fi - openssl version - ./configure --with-pydebug - make -j4 regen-all - changes=`git status --porcelain` + - openssl version + +# Travis provides only 2 cores, so don't overdo the parallelism and waste memory. +before_script: + - ./configure --with-pydebug + - make -j4 regen-all + - changes=`git status --porcelain` + - | + # Check for changes in regenerated files if ! test -z "$changes" then echo "Generated files not up to date" echo "$changes" exit 1 fi - make -j4 - make pythoninfo + - make -j4 + - make pythoninfo script: # Using the built Python as patchcheck.py is built around the idea of using @@ -128,10 +132,10 @@ script: # should be compared against. # Only run on Linux as the check only needs to be run once. - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./python Tools/scripts/patchcheck.py --travis $TRAVIS_PULL_REQUEST; fi - # `-r -w` implicitly provided through `make buildbottest`. - - make buildbottest TESTOPTS="-j4 -uall,-cpu" # Check that all symbols exported by libpython start with "Py" or "_Py" - make smelly + # `-r -w` implicitly provided through `make buildbottest`. + - make buildbottest TESTOPTS="-j4 -uall,-cpu" notifications: email: false