Prepare release 2.8

Change-Id: I98c36a7763387cd27df88713e68035dff222b187
diff --git a/.travis.yml b/.travis.yml
index 08e40e9..a49b5e8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,24 +1,89 @@
-sudo: required
-language: generic
+version: ~> 1.0
+language: cpp
+os: linux
+dist: bionic
+arch: amd64
+
 env:
-  global:
-    - WAF_JOBS=2
-matrix:
+  - COMPILER=g++-7
+  - COMPILER=g++-9
+  - COMPILER=clang++-6.0
+  - COMPILER=clang++-9
+
+jobs:
   include:
-    - os: linux
-      dist: xenial
-      env:
-        - CXX=g++
-        - NODE_LABELS="Linux Ubuntu Ubuntu-16.04"
+    # Linux
+    - env: COMPILER=g++-8
+    - env: COMPILER=clang++-5.0
+    - env: COMPILER=clang++-7
+    - env: COMPILER=clang++-8
+    - env: COMPILER=clang++-10
+    - env: COMPILER=clang++-11
+
+    # macOS
     - os: osx
-      osx_image: xcode10.1
-      env:
-        - CXX=clang++
-        - xcode10.1
-        - NODE_LABELS="OSX OSX_VERSION=10.13"
-notifications:
-  email:
-    on_success: always
-    on_failure: always
+      osx_image: xcode11.4
+      env: # default compiler
+
+  allow_failures:
+    - env: COMPILER=clang++-11
+
+  fast_finish: true
+
+before_install:
+  - |
+    : Adding apt repositories
+    case ${COMPILER} in
+      g++-9)
+        # https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+packages
+        travis_retry sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
+        travis_retry sudo apt-get -qq update
+        ;;
+      clang++-1?)
+        # https://apt.llvm.org/
+        LLVM_REPO=${COMPILER/clang++/llvm-toolchain-${TRAVIS_DIST}}
+        travis_retry wget -nv -O - "https://apt.llvm.org/llvm-snapshot.gpg.key" | sudo apt-key add -
+        travis_retry sudo add-apt-repository -y "deb http://apt.llvm.org/${TRAVIS_DIST}/ ${LLVM_REPO%-11} main"
+        travis_retry sudo apt-get -qq update
+        ;;
+    esac
+
+install:
+  - |
+    : Installing C++ compiler
+    if [[ -n ${COMPILER} ]]; then
+      travis_retry sudo apt-get -qy install ${COMPILER/clang++/clang}
+    fi
+
+before_script:
+  - |
+    : Setting environment variables
+    if [[ -n ${COMPILER} ]]; then
+      export CXX=${COMPILER}
+    fi
+    case ${TRAVIS_OS_NAME} in
+      linux)  export NODE_LABELS="Linux Ubuntu Ubuntu-18.04" ;;
+      osx)    export NODE_LABELS="OSX OSX-$(sw_vers -productVersion | cut -d . -f -2)" ;;
+    esac
+    export JOB_NAME=limited-build
+    export WAF_JOBS=2
+  - |
+    : Enabling workarounds
+    case "${TRAVIS_CPU_ARCH},${COMPILER}" in
+      arm64,g++*)
+        # Avoid exceeding the per-job time limit
+        export DISABLE_HEADERS_CHECK=yes
+        ;;
+      ppc64le,g++-7)
+        # AddressSanitizer does not seem to be working
+        export DISABLE_ASAN=yes
+        ;;
+      *,clang++-8)
+        # https://bugs.llvm.org/show_bug.cgi?id=40808
+        export DISABLE_ASAN=yes
+        ;;
+    esac
+  - ${CXX:-c++} --version
+
 script:
   - ./.jenkins