blob: e372e1383c9904fb7c041d3462045fa2a5cb73b0 [file] [log] [blame]
Roger Meiera0836f62013-05-05 00:19:38 +02001#
2# Licensed to the Apache Software Foundation (ASF) under one
3# or more contributor license agreements. See the NOTICE file
4# distributed with this work for additional information
5# regarding copyright ownership. The ASF licenses this file
6# to you under the Apache License, Version 2.0 (the
7# "License"); you may not use this file except in compliance
8# with the License. You may obtain a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing,
13# software distributed under the License is distributed on an
14# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15# KIND, either express or implied. See the License for the
16# specific language governing permissions and limitations
17# under the License.
18#
19
20# build Apache Thrift on Travis CI - https://travis-ci.org/
21
Henrique Mendonçaaba4b1f2015-06-26 20:56:18 +100022sudo: required
Nobuaki Sukegawad479e232016-02-28 11:28:19 +090023dist: trusty
Henrique Mendonçaaba4b1f2015-06-26 20:56:18 +100024
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090025services:
26 - docker
Roger Meiera0836f62013-05-05 00:19:38 +020027
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090028install:
Nobuaki Sukegawa93fb7ea2016-09-04 17:00:11 +090029 - (travis_wait ./build/docker/check_unmodified.sh $DISTRO && touch .unmodified) || true
30 - if [ ! -f .unmodified ]; then travis_retry travis_wait docker build -q -t thrift-build:$DISTRO build/docker/$DISTRO; fi
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +090031
32script:
Nobuaki Sukegawa93fb7ea2016-09-04 17:00:11 +090033 - docker run --net=host -e BUILD_LIBS="$BUILD_LIBS" $BUILD_ENV -v $(pwd):/thrift/src -it thrift-build:$DISTRO build/docker/scripts/$SCRIPT $BUILD_ARG
Roger Meier7ed94ef2015-04-26 16:55:35 +020034
henriqueac8d8e22014-07-23 23:31:04 +020035env:
Roger Meier5effab62014-11-16 22:31:33 +010036 global:
37 - TEST_NAME=""
Nobuaki Sukegawa93fb7ea2016-09-04 17:00:11 +090038 - SCRIPT="cmake.sh"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090039 - BUILD_ARG=""
40 - BUILD_ENV="-e CC=clang -e CXX=clang++"
James E. King, IIId7142b72017-09-01 13:00:36 -070041 - DISTRO=ubuntu-xenial
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +090042 - BUILD_LIBS="CPP C_GLIB HASKELL JAVA PYTHON TESTING TUTORIALS" # only meaningful for CMake builds
henriquec0a7d722014-07-26 13:11:12 +020043
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +090044 matrix:
James E. King, III81cdcd32017-09-09 17:54:10 +000045 - TEST_NAME="Cross Language Tests (Binary Protocol)"
Nobuaki Sukegawa93fb7ea2016-09-04 17:00:11 +090046 SCRIPT="cross-test.sh"
James E. King, III81cdcd32017-09-09 17:54:10 +000047 BUILD_ARG="-'(binary)'"
48 BUILD_ENV="-e CC=clang -e CXX=clang++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
49
50 - TEST_NAME="Cross Language Tests (Header, JSON Protocols)"
51 SCRIPT="cross-test.sh"
52 BUILD_ARG="-'(header|json)'"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090053 BUILD_ENV="-e CC=clang -e CXX=clang++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
Roger Meier41ad4342015-03-24 22:30:40 +010054
James E. King, IIId7142b72017-09-01 13:00:36 -070055 - TEST_NAME="Cross Language Tests (Compact and Multiplexed Protocols)"
Nobuaki Sukegawa2c64bdd2016-09-04 15:33:40 +090056 SCRIPT="cross-test.sh"
James E. King, IIId7142b72017-09-01 13:00:36 -070057 BUILD_ARG="-'(compact|multiplexed)'"
Allen Georgebc1344d2017-04-28 10:22:03 -040058 BUILD_ENV="-e CC=clang -e CXX=clang++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
59
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090060 # Autotools builds
James E. King, IIId7142b72017-09-01 13:00:36 -070061 # TODO: Remove them once migrated to CMake
James E. King, III4c30c152017-09-14 05:10:29 -070062 # centos-7.3 build jobs appear to be unstable/hang...
63 # TEST_NAME="Autotools (CentOS 7.3)"
64 # DISTRO=centos-7.3
65 # SCRIPT="autotools.sh"
66 # BUILD_ENV="-e CC=gcc -e CXX=g++"
67 # BUILD_ARG="--without-cpp --without-csharp --without-c_glib --without-d -without-dart --without-erlang --without-go --without-haskell --without-haxe"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +090068
James E. King, IIId7142b72017-09-01 13:00:36 -070069 - TEST_NAME="Autotools (Ubuntu Xenial)"
Nobuaki Sukegawa93fb7ea2016-09-04 17:00:11 +090070 SCRIPT="autotools.sh"
James E. King, IIId7142b72017-09-01 13:00:36 -070071 BUILD_ENV="-e CC=gcc -e CXX=g++"
James E. King, III4c30c152017-09-14 05:10:29 -070072 BUILD_ARG="--enable-plugin" # --without-java --without-lua --without-nodejs --without-perl --without-php --without-php_extension --without-python --without-py3 --without-ruby --without-rust"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +090073
James E. King, III4eb23472017-04-05 19:32:27 -040074 # CMake builds
James E. King, III4c30c152017-09-14 05:10:29 -070075 # centos-7.3 build jobs appear to be unstable/hang...
76 # TEST_NAME="CMake (CentOS 7.3)"
77 # DISTRO=centos-7.3
Roger Meier447294f2015-12-11 00:04:41 +010078
James E. King, IIId7142b72017-09-01 13:00:36 -070079 - TEST_NAME="CMake (Ubuntu Xenial)"
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +090080
James E. King, IIId7142b72017-09-01 13:00:36 -070081 # C++ specific options: compiler plug-in, threading model
82 - TEST_NAME="C++ (Boost Thread)"
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +090083 BUILD_LIBS="CPP TESTING TUTORIALS"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090084 BUILD_ARG="-DWITH_BOOSTTHREADS=ON -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090085
James E. King, III4c30c152017-09-14 05:10:29 -070086 - TEST_NAME="C++ (Std Thread) and Plugin"
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +090087 BUILD_LIBS="CPP TESTING TUTORIALS"
James E. King, III4eb23472017-04-05 19:32:27 -040088 BUILD_ARG="-DWITH_PLUGIN=ON -DWITH_STDTHREADS=ON -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090089
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090090 # Distribution
91 - TEST_NAME="make dist"
Nobuaki Sukegawa93fb7ea2016-09-04 17:00:11 +090092 SCRIPT="make-dist.sh"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090093
94 - TEST_NAME="Debian Packages"
Nobuaki Sukegawa93fb7ea2016-09-04 17:00:11 +090095 SCRIPT="dpkg.sh"
Roger Meier447294f2015-12-11 00:04:41 +010096
Jim Apple147c2842017-03-18 12:56:50 -070097 # C and C++ undefined behavior. This wraps autotools.sh, but each binary crashes if
98 # undefined behavior occurs. Skips the known flaky tests.
James E. King, III4c30c152017-09-14 05:10:29 -070099 # Unstable: THRIFT-4064 needs to be fixed perhaps?
Jim Apple147c2842017-03-18 12:56:50 -0700100 - TEST_NAME="UBSan"
101 SCRIPT="ubsan.sh"
James E. King, III4c30c152017-09-14 05:10:29 -0700102 BUILD_ARG="--without-haskell --without-nodejs --without-perl --without-python"
James E. King, III81cdcd32017-09-09 17:54:10 +0000103 UNSTABLE=true
Jim Apple147c2842017-03-18 12:56:50 -0700104
henriqueac8d8e22014-07-23 23:31:04 +0200105matrix:
James E. King, III81cdcd32017-09-09 17:54:10 +0000106 allow_failures:
107 - env: UNSTABLE=true
henriqueac8d8e22014-07-23 23:31:04 +0200108 include:
Roger Meier5effab62014-11-16 22:31:33 +0100109 # QA jobs for code analytics and metrics
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900110 #
Nobuaki Sukegawad479e232016-02-28 11:28:19 +0900111 # C/C++ static code analysis with cppcheck
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900112 # add --error-exitcode=1 to --enable=all as soon as everything is fixed
Nobuaki Sukegawad479e232016-02-28 11:28:19 +0900113 #
114 # Python code style check with flake8
115 #
116 # search for TODO etc within source tree
117 # some statistics about the code base
118 # some info about the build machine
119 - env: TEST_NAME="cppcheck, flake8, TODO FIXME HACK, LoC and system info"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900120 install:
Nobuaki Sukegawa3dd4d8e2016-03-01 01:26:56 +0900121 - travis_retry sudo apt-get update
122 - travis_retry sudo apt-get install -ym cppcheck sloccount python-flake8
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900123 script:
124 # Compiler cppcheck (All)
125 - cppcheck --force --quiet --inline-suppr --enable=all -j2 compiler/cpp/src
126 # C++ cppcheck (All)
127 - cppcheck --force --quiet --inline-suppr --enable=all -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp
128 # C Glib cppcheck (All)
129 - cppcheck --force --quiet --inline-suppr --enable=all -j2 lib/c_glib/src lib/c_glib/test test/c_glib/src tutorial/c_glib
130 # Silent error checks
131 - cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 compiler/cpp/src
132 - cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp
133 - cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/c_glib/src lib/c_glib/test test/c_glib/src tutorial/c_glib
Nobuaki Sukegawad479e232016-02-28 11:28:19 +0900134 # Python code style
135 - flake8 --ignore=E501 lib/py
136 - flake8 tutorial/py
137 - flake8 --ignore=E501 test/py
138 - flake8 test/py.twisted
139 - flake8 test/py.tornado
140 - flake8 --ignore=E501 test/test.py
141 - flake8 --ignore=E501 test/crossrunner
142 - flake8 test/features
143 # TODO etc
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900144 - grep -r TODO *
145 - grep -r FIXME *
146 - grep -r HACK *
147 # LoC
148 - sloccount .
149 # System Info
150 - dpkg -l
151 - uname -a