diff options
author | Nobuaki Sukegawa <nsuke@apache.org> | 2015-11-28 15:04:39 +0900 |
---|---|---|
committer | Nobuaki Sukegawa <nsuke@apache.org> | 2015-12-05 11:28:27 +0900 |
commit | a6ab1f5e6d8c5f8c64d356d72993a423cc2bf588 (patch) | |
tree | 13c2f9427494700526ea9149a9d6c233dfa8550a /.travis.yml | |
parent | 1a32c3b93fb8fc5c48d7fe8ee22398b073d812d6 (diff) | |
download | thrift-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.yml | 231 |
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 -# |