[Python-checkins] Clean up Travis config (GH-5727)

Zachary Ware webhook-mailer at python.org
Sun Feb 18 11:19:40 EST 2018


https://github.com/python/cpython/commit/7eb3f8226ea7b79dae4e4e8b05730cfe0d9af7c1
commit: 7eb3f8226ea7b79dae4e4e8b05730cfe0d9af7c1
branch: master
author: Zachary Ware <zachary.ware at gmail.com>
committer: GitHub <noreply at github.com>
date: 2018-02-18T10:19:37-06:00
summary:

Clean up Travis config (GH-5727)

files:
M .travis.yml

diff --git a/.travis.yml b/.travis.yml
index 665b266146ae..ab43318975fb 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))
+      # Check short-circuit conditions
+      if [ "${TESTING}" != "docs" ]
+      then
+        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
 
-      # 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)'
+install:
+  - |
+      # Install OpenSSL as necessary
+      if [ "${TESTING}" != "docs" ]
       then
-        echo "Only docs were updated, stopping build process."
-        exit
-      fi
-      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



More information about the Python-checkins mailing list