summaryrefslogtreecommitdiff
path: root/.travis.yml
diff options
context:
space:
mode:
authorNobuaki Sukegawa <nsuke@apache.org>2015-11-28 15:04:39 +0900
committerNobuaki Sukegawa <nsuke@apache.org>2015-12-05 11:28:27 +0900
commita6ab1f5e6d8c5f8c64d356d72993a423cc2bf588 (patch)
tree13c2f9427494700526ea9149a9d6c233dfa8550a /.travis.yml
parent1a32c3b93fb8fc5c48d7fe8ee22398b073d812d6 (diff)
downloadthrift-a6ab1f5e6d8c5f8c64d356d72993a423cc2bf588.tar.gz
THRIFT-3452 .travis.yml: Migrating from legacy to container-based infrastructure
Client: Build Patch: Nobuaki Sukegawa Use "services: docker" This closes #730
Diffstat (limited to '.travis.yml')
-rw-r--r--.travis.yml231
1 files changed, 101 insertions, 130 deletions
diff --git a/.travis.yml b/.travis.yml
index 1197fe782..65fbb12a8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -19,146 +19,123 @@
# build Apache Thrift on Travis CI - https://travis-ci.org/
-language: cpp
-
sudo: required
-cache:
- - apt
- - npm
- - maven
-
-compiler:
- - clang
- - gcc
+services:
+ - docker
-before_install:
- - sh build/travis/installCXXDependencies.sh
- - if [ "$ALL_DEPS" != "no" ] ; then sh build/travis/installDependencies.sh 1> /dev/null ; fi
- - if [ "$BUILD_HASKELL" != "no" ] ; then export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/1.20/bin:$PATH ; fi
- - if [ "$BUILD_HASKELL" != "no" ] ; then cabal update ; fi
- # Disabling any cabal concurrent jobs to workaround GHC crashes due to out of memory.
- # We can safely remove this to speed up cabal install, once Travis infrastructure is upgraded.
- - if [ "$BUILD_HASKELL" != "no" ] ; then sed -i 's/^\s*jobs\s*:\s*\$ncpus\s*$/jobs:1/g' $HOME/.cabal/config && cat $HOME/.cabal/config | grep jobs ; fi
-
-before_script:
- - sudo /etc/init.d/mysql stop
- - sudo /etc/init.d/postgresql stop
+install:
+ # TODO: Once merged, remove experimental tag and use latest
+ - docker pull thrift/$DISTRO:experiment || true
+ - cp -r ./build/docker/scripts/*.sh ./build/docker/$DISTRO/scripts/
+ - docker build -q -t thrift-build build/docker/$DISTRO
script:
- - if [ "x$CMAKE_CONFIG" != "xnone" ] ; then mkdir cmake_build && cd cmake_build && cmake -GNinja -DQT_MOC_EXECUTABLE="moq-qt5" $CMAKE_CONFIG $TRAVIS_BUILD_DIR ; fi
- - if [ "x$CMAKE_CONFIG" != "xnone" ] ; then ninja -j $CONCURRENT_JOBS ; fi
- - if [ "x$CMAKE_CONFIG" != "xnone" ] ; then cpack ; fi
- - if [ "x$CMAKE_CONFIG" != "xnone" ] ; then ctest -VV -E "(concurrency_test|processor_test|Haskell)" ; fi
- - if [ "x$CONFIG" != "xnone" ] ; then sh bootstrap.sh ; fi
- - if [ "x$CONFIG" != "xnone" ] ; then sh configure $CONFIG ; fi
- - if [ "x$CONFIG" != "xnone" ] ; then make $MAKE_TARGET -j $CONCURRENT_JOBS ; fi
-
-after_failure:
- - if [ "x$ERROR_LOG" != "xnone" ] ; then cat $ERROR_LOG ; fi
+ - docker run $BUILD_ENV -v $(pwd):/thrift/src -it thrift-build $BUILD_CMD $BUILD_ARG
env:
global:
- TEST_NAME=""
- - CMAKE_CONFIG="none"
- - CONFIG="none"
- - MAKE_TARGET="check"
- - ALL_DEPS="no"
- # Invoke cabal only when necessary because it is flaky due to network and package updates.
- - BUILD_HASKELL="no"
- - GHCVER=7.8.3
- - ERROR_LOG="none"
- - CONCURRENT_JOBS=2
+ - BUILD_CMD="none"
+ - BUILD_ARG=""
+ - BUILD_ENV="-e CC=clang -e CXX=clang++"
+ - DISTRO=ubuntu
matrix:
- # Put it here because it's most time consuming
- - TEST_NAME="make cross (automake)"
- THRIFT_CROSSTEST_CONCURRENCY=6
- CONFIG="--enable-tutorial=no --without-lua --without-haxe --without-d"
- ALL_DEPS="yes"
- BUILD_HASKELL="yes"
- MAKE_TARGET="cross"
- ERROR_LOG="test/log/unexpected_failures.log"
-
- # CMake builds
- - TEST_NAME="compiler (CMake + CPack)"
- CMAKE_CONFIG="-DBUILD_COMPILER=ON -DBUILD_LIBRARIES=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF"
- - TEST_NAME="all (CMake + CPack)"
- CMAKE_CONFIG=""
- ALL_DEPS="yes"
- BUILD_HASKELL="yes"
- - TEST_NAME="C++/boost-threads (CMake + CPack)"
- CMAKE_CONFIG="-DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF -DWITH_BOOSTTHREADS=ON"
- - TEST_NAME="C++/std-threads (CMake + CPack)"
- CMAKE_CONFIG="-DCMAKE_CXX_FLAGS=-std=c++0x -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF -DWITH_STDTHREADS=ON"
- - TEST_NAME="compiler (mingw32-gcc, CMake + CPack)"
- CMAKE_CONFIG="-DCMAKE_TOOLCHAIN_FILE=../build/cmake/mingw32-toolchain.cmake -DBUILD_COMPILER=ON -DBUILD_LIBRARIES=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF"
-
- # Autotool builds
- # TODO: Remove them as migration is made
- - TEST_NAME="compiler (automake)"
- CONFIG="--disable-libs"
-
- # TODO: Enable tutorial once "make check -C tutorial/go" is fixed
- - TEST_NAME="C C# D Dart Erlang Go Haxe (automake)"
- CONFIG="--without-cpp --without-haskell --without-java --without-lua --without-nodejs --without-perl --without-php --without-php_extension --without-python --without-ruby --enable-tutorial=no"
- ALL_DEPS="yes"
-
- - TEST_NAME="Java Lua Node.js Perl PHP Python Ruby (automake)"
- CONFIG="--without-cpp --without-haskell --without-c_glib --without-csharp --without-d --without-dart --without-erlang --without-go --without-haxe"
- ALL_DEPS="yes"
-
- # Isolate unstable builds from others
- - TEST_NAME="C++ (automake)"
- CONFIG="--without-haskell --without-c_glib --without-csharp --without-d --without-dart --without-erlang --without-go --without-haxe --without-java --without-lua --without-nodejs --without-perl --without-php --without-php_extension --without-python --without-ruby"
-
- - TEST_NAME="Haskell (automake)"
- CONFIG="--without-cpp --without-c_glib --without-csharp --without-d --without-dart --without-erlang --without-go --without-haxe --without-java --without-lua --without-nodejs --without-perl --without-php --without-php_extension --without-python --without-ruby"
- ALL_DEPS="yes"
- BUILD_HASKELL="yes"
-
- - TEST_NAME="dist (automake)"
- CONFIG=""
- ALL_DEPS="yes"
- BUILD_HASKELL="yes"
- MAKE_TARGET="dist"
-
+ # TODO: Break up by protocol types to avoid 50min limit
+ - TEST_NAME="Cross Language Tests"
+ BUILD_CMD="../cross-test.sh"
+ BUILD_ARG="--enable-tutorial=no"
+ BUILD_ENV="-e CC=clang -e CXX=clang++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
+
+ # TODO: Remove them once migrated to CMake
+ # Autotools builds
+ - TEST_NAME="C C++ C# D Erlang Go Haxe (automake)"
+ BUILD_CMD="../autotools.sh"
+ BUILD_ARG="--without-dart --without-haskell --without-java --without-lua --without-nodejs --without-perl --without-php --without-php_extension --without-python --without-ruby"
+
+ - TEST_NAME="C C++ - GCC (automake)"
+ BUILD_CMD="../autotools.sh"
+ BUILD_ARG="--without-csharp --without-java --without-erlang --without-nodejs --without-lua --without-python --without-perl --without-php --without-php_extension --without-dart --without-ruby --without-haskell --without-go --without-haxe --without-d"
+
+ - TEST_NAME="Java Lua Perl PHP Python Ruby (automake)"
+ BUILD_CMD="../autotools.sh"
+ BUILD_ARG="--without-cpp --without-haskell --without-c_glib --without-csharp --without-d --without-dart --without-erlang --without-go --without-haxe"
+
+ # Tutorial build is unstable
+ - TEST_NAME="Dart (automake)"
+ BUILD_CMD="../autotools.sh"
+ BUILD_ARG="--without-cpp --without-haskell --without-c_glib --without-csharp --without-d --without-erlang --without-go --without-haxe --without-java --without-lua --without-nodejs --without-perl --without-php --without-php_extension --without-python --without-ruby --enable-tutorial=no"
+
+ # These are flaky and also have lengthy output
+ - TEST_NAME="Haskell Node.js (automake)"
+ BUILD_CMD="../autotools.sh"
+ BUILD_ARG="--without-cpp --without-c_glib --without-csharp --without-d --without-dart --without-erlang --without-go --without-haxe --without-java --without-lua --without-perl --without-php --without-php_extension --without-python --without-ruby"
+
+ # CMake build
+ - TEST_NAME="All"
+ BUILD_CMD="../cmake.sh"
+
+ - TEST_NAME="C C++ - GCC"
+ BUILD_CMD="../cmake.sh"
+ BUILD_ARG="-DWITH_PYTHON=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
+ BUILD_ENV="-e CC=gcc -e CXX=g++"
+
+ - TEST_NAME="C++ (Boost Thread)"
+ BUILD_CMD="../cmake.sh"
+ BUILD_ARG="-DWITH_BOOSTTHREADS=ON -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
+
+ - TEST_NAME="C++ (Boost Thread - GCC)"
+ BUILD_CMD="../cmake.sh"
+ BUILD_ARG="-DWITH_BOOSTTHREADS=ON -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
+ BUILD_ENV="-e CC=gcc -e CXX=g++"
+
+ - TEST_NAME="C++ (Std Thread)"
+ BUILD_CMD="../cmake.sh"
+ BUILD_ARG="-DWITH_STDTHREADS=ON -DCMAKE_CXX_FLAGS='-std=c++11' -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
+
+ - TEST_NAME="C++ (Std Thread - GCC)"
+ BUILD_CMD="../cmake.sh"
+ BUILD_ARG="-DWITH_STDTHREADS=ON -DCMAKE_CXX_FLAGS='-std=c++11' -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
+ BUILD_ENV="-e CC=gcc -e CXX=g++"
+
+ - TEST_NAME="Compiler (mingw)"
+ BUILD_CMD="../cmake.sh"
+ BUILD_ARG="-DCMAKE_TOOLCHAIN_FILE=../build/cmake/mingw32-toolchain.cmake -DBUILD_COMPILER=ON -DBUILD_LIBRARIES=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF"
+ BUILD_ENV=""
+
+ - TEST_NAME="All (CentOS)"
+ BUILD_CMD="../cmake.sh"
+ DISTRO=centos
+
+ - TEST_NAME="C C++ - GCC (CentOS)"
+ BUILD_CMD="../cmake.sh"
+ BUILD_ARG="-DWITH_PYTHON=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
+ BUILD_ENV="-e CC=gcc -e CXX=g++"
+ DISTRO=centos
+
+ # Distribution
+ - TEST_NAME="make dist"
+ BUILD_CMD="../make-dist.sh"
+ BUILD_ENV="-e CC=gcc -e CXX=g++"
+
+ - TEST_NAME="Debian Packages"
+ BUILD_CMD="../dpkg.sh"
+ BUILD_ENV="-e CC=gcc -e CXX=g++"
matrix:
allow_failures:
- # gcc fails on travis seemingly due to out of memory
- - compiler: gcc
-
- exclude:
- # This one takes very long
- - compiler: gcc
- env: TEST_NAME="make cross (automake)" CONFIG="--without-python" ALL_DEPS="yes" MAKE_TARGET="cross"
-
- # Does not use native compiler, no need to do it twice
- - compiler: gcc
- env: TEST_NAME="compiler (mingw32-gcc, CMake + CPack)" CMAKE_CONFIG="-DCMAKE_TOOLCHAIN_FILE=../build/cmake/mingw32-toolchain.cmake -DBUILD_COMPILER=ON -DBUILD_LIBRARIES=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF"
- - compiler: gcc
- env: TEST_NAME="dist (automake)" CONFIG="" ALL_DEPS="yes" MAKE_TARGET="dist"
+ - env: TEST_NAME="All (CentOS)" BUILD_CMD="../cmake.sh" DISTRO=centos
include:
- - env:
- - TEST_NAME="Debian Packages"
- compiler: clang
- before_install:
- - sh build/travis/installCXXDependencies.sh;
- - sh build/travis/installDependencies.sh 1> /dev/null;
- - sudo apt-get install build-essential mono-gmcs mono-devel libmono-system-web2.0-cil erlang-base ruby1.8-dev python-all python-all-dev python-all-dbg php5 php5-dev
- script:
- - dpkg-buildpackage -tc -us -uc
- - ls -al ..
-
-
# QA jobs for code analytics and metrics
-
+ #
# static code analysis with cppcheck
# add --error-exitcode=1 to --enable=all as soon as everything is fixed
- - env: TEST_NAME="cppcheck"
- before_install: sudo apt-get install cppcheck
+ - env: TEST_NAME="cppcheck"
+ install:
+ - sudo apt-get update
+ - sudo apt-get install cppcheck
script:
# Compiler cppcheck (All)
- cppcheck --force --quiet --inline-suppr --enable=all -j2 compiler/cpp/src
@@ -171,16 +148,13 @@ matrix:
- cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp
- cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/c_glib/src lib/c_glib/test test/c_glib/src tutorial/c_glib
- # TODO use findbugs for Java
- # TODO use fxcop for C#
-
- # TODO do style checks
-
# search for TODO etc within source tree
# some statistics about the code base
# some info about the build machine
- env: TEST_NAME="TODO FIXME HACK, LoC and system info"
- before_install: sudo apt-get install sloccount
+ install:
+ - sudo apt-get update
+ - sudo apt-get install sloccount
script:
- grep -r TODO *
- grep -r FIXME *
@@ -190,6 +164,3 @@ matrix:
# System Info
- dpkg -l
- uname -a
-
-# TODO make it perfect ;-r
-#