blob: 8b708895be933bd845f40882d4d3274eb9aed7fe [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 Sukegawa2c5ed272016-02-27 18:22:40 +090029 - travis_wait docker pull thrift/$DISTRO:latest || true
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090030 - cp -r ./build/docker/scripts/*.sh ./build/docker/$DISTRO/scripts/
Nobuaki Sukegawa50bb8602016-02-22 22:13:31 +090031 - travis_retry travis_wait docker build -q -t thrift-build build/docker/$DISTRO
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +090032
33script:
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +090034 - docker run -e BUILD_LIBS="$BUILD_LIBS" $BUILD_ENV -v $(pwd):/thrift/src -it thrift-build $BUILD_CMD $BUILD_ARG
Roger Meier7ed94ef2015-04-26 16:55:35 +020035
henriqueac8d8e22014-07-23 23:31:04 +020036env:
Roger Meier5effab62014-11-16 22:31:33 +010037 global:
38 - TEST_NAME=""
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090039 - BUILD_CMD="none"
40 - BUILD_ARG=""
41 - BUILD_ENV="-e CC=clang -e CXX=clang++"
42 - DISTRO=ubuntu
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +090043 - BUILD_LIBS="CPP C_GLIB HASKELL JAVA PYTHON TESTING TUTORIALS" # only meaningful for CMake builds
henriquec0a7d722014-07-26 13:11:12 +020044
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +090045 matrix:
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090046 # TODO: Break up by protocol types to avoid 50min limit
47 - TEST_NAME="Cross Language Tests"
48 BUILD_CMD="../cross-test.sh"
49 BUILD_ARG="--enable-tutorial=no"
50 BUILD_ENV="-e CC=clang -e CXX=clang++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
Roger Meier41ad4342015-03-24 22:30:40 +010051
Roger Meier447294f2015-12-11 00:04:41 +010052 - TEST_NAME="Cross Language Tests (Debian)"
53 BUILD_CMD="../cross-test.sh"
54 BUILD_ARG="--enable-tutorial=no"
55 BUILD_ENV="-e CC=clang -e CXX=clang++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
56 DISTRO=debian
57
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090058 # TODO: Remove them once migrated to CMake
59 # Autotools builds
Nobuaki Sukegawa5b446122016-02-04 14:27:24 +090060 - TEST_NAME="C C++ C# D Erlang Haxe Go (automake)"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090061 BUILD_CMD="../autotools.sh"
Nobuaki Sukegawa5b446122016-02-04 14:27:24 +090062 BUILD_ARG="--without-dart --without-haskell --without-java --without-lua --without-nodejs --without-perl --without-php --without-php_extension --without-python --without-ruby"
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +090063
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090064 - TEST_NAME="C C++ - GCC (automake)"
65 BUILD_CMD="../autotools.sh"
66 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"
Nobuaki Sukegawaea5845a2016-02-14 21:56:53 +090067 BUILD_ENV="-e CC=gcc -e CXX=g++"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +090068
Nobuaki Sukegawaf2952842016-02-27 03:29:34 +090069 - TEST_NAME="Java Lua Perl PHP Python Ruby Dart (automake)"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090070 BUILD_CMD="../autotools.sh"
Nobuaki Sukegawaf2952842016-02-27 03:29:34 +090071 BUILD_ARG="--without-cpp --without-haskell --without-c_glib --without-csharp --without-d --without-erlang --without-go --without-haxe"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +090072
Nobuaki Sukegawaf2952842016-02-27 03:29:34 +090073 # These are flaky (due to cabal and npm network/server failures) and also have lengthy output
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090074 - TEST_NAME="Haskell Node.js (automake)"
75 BUILD_CMD="../autotools.sh"
76 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"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +090077
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090078 # CMake build
79 - TEST_NAME="All"
80 BUILD_CMD="../cmake.sh"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +090081
Roger Meier447294f2015-12-11 00:04:41 +010082 - TEST_NAME="All (Debian)"
83 BUILD_CMD="../cmake.sh"
84 DISTRO=debian
85
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090086 - TEST_NAME="C C++ - GCC"
87 BUILD_CMD="../cmake.sh"
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +090088 BUILD_LIBS="CPP C_GLIB TESTING TUTORIALS"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090089 BUILD_ARG="-DWITH_PYTHON=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
90 BUILD_ENV="-e CC=gcc -e CXX=g++"
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +090091
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090092 - TEST_NAME="C++ (Boost Thread)"
93 BUILD_CMD="../cmake.sh"
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +090094 BUILD_LIBS="CPP TESTING TUTORIALS"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090095 BUILD_ARG="-DWITH_BOOSTTHREADS=ON -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
96
97 - TEST_NAME="C++ (Boost Thread - GCC)"
98 BUILD_CMD="../cmake.sh"
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +090099 BUILD_LIBS="CPP TESTING TUTORIALS"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900100 BUILD_ARG="-DWITH_BOOSTTHREADS=ON -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
101 BUILD_ENV="-e CC=gcc -e CXX=g++"
102
103 - TEST_NAME="C++ (Std Thread)"
104 BUILD_CMD="../cmake.sh"
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +0900105 BUILD_LIBS="CPP TESTING TUTORIALS"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900106 BUILD_ARG="-DWITH_STDTHREADS=ON -DCMAKE_CXX_FLAGS='-std=c++11' -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
107
108 - TEST_NAME="C++ (Std Thread - GCC)"
109 BUILD_CMD="../cmake.sh"
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +0900110 BUILD_LIBS="CPP TESTING TUTORIALS"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900111 BUILD_ARG="-DWITH_STDTHREADS=ON -DCMAKE_CXX_FLAGS='-std=c++11' -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
112 BUILD_ENV="-e CC=gcc -e CXX=g++"
113
114 - TEST_NAME="Compiler (mingw)"
115 BUILD_CMD="../cmake.sh"
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +0900116 BUILD_LIBS=""
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900117 BUILD_ARG="-DCMAKE_TOOLCHAIN_FILE=../build/cmake/mingw32-toolchain.cmake -DBUILD_COMPILER=ON -DBUILD_LIBRARIES=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF"
118 BUILD_ENV=""
119
Nobuaki Sukegawaed23b2b2016-02-28 13:47:44 +0900120 - TEST_NAME="All - GCC (CentOS)"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900121 BUILD_CMD="../cmake.sh"
Nobuaki Sukegawaed23b2b2016-02-28 13:47:44 +0900122 BUILD_ENV="-e CC=gcc -e CXX=g++"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900123 DISTRO=centos
124
Nobuaki Sukegawaed23b2b2016-02-28 13:47:44 +0900125 - TEST_NAME="C C++ - Clang (CentOS)"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900126 BUILD_CMD="../cmake.sh"
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +0900127 BUILD_LIBS="CPP C_GLIB TESTING TUTORIALS"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900128 BUILD_ARG="-DWITH_PYTHON=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900129 DISTRO=centos
130
Nobuaki Sukegawa33744b02016-01-03 14:24:39 +0900131 - TEST_NAME="Python 2.6 (CentOS 6)"
132 BUILD_CMD="../cmake.sh"
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +0900133 BUILD_LIBS="PYTHON TESTING TUTORIALS"
Nobuaki Sukegawa33744b02016-01-03 14:24:39 +0900134 BUILD_ARG="-DWITH_PYTHON=ON -DWITH_CPP=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
135 BUILD_ENV="-e CC=gcc -e CXX=g++"
136 DISTRO=centos6
137
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900138 # Distribution
139 - TEST_NAME="make dist"
140 BUILD_CMD="../make-dist.sh"
141 BUILD_ENV="-e CC=gcc -e CXX=g++"
142
143 - TEST_NAME="Debian Packages"
144 BUILD_CMD="../dpkg.sh"
145 BUILD_ENV="-e CC=gcc -e CXX=g++"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900146
Roger Meier447294f2015-12-11 00:04:41 +0100147 - TEST_NAME="make dist (Debian)"
148 BUILD_CMD="../make-dist.sh"
149 BUILD_ENV="-e CC=gcc -e CXX=g++"
150 DISTRO=debian
151
152 - TEST_NAME="Debian Packages (Debian)"
153 BUILD_CMD="../dpkg.sh"
154 BUILD_ENV="-e CC=gcc -e CXX=g++"
155 DISTRO=debian
156
henriqueac8d8e22014-07-23 23:31:04 +0200157matrix:
158 include:
Roger Meier5effab62014-11-16 22:31:33 +0100159 # QA jobs for code analytics and metrics
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900160 #
Nobuaki Sukegawad479e232016-02-28 11:28:19 +0900161 # C/C++ static code analysis with cppcheck
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900162 # add --error-exitcode=1 to --enable=all as soon as everything is fixed
Nobuaki Sukegawad479e232016-02-28 11:28:19 +0900163 #
164 # Python code style check with flake8
165 #
166 # search for TODO etc within source tree
167 # some statistics about the code base
168 # some info about the build machine
169 - env: TEST_NAME="cppcheck, flake8, TODO FIXME HACK, LoC and system info"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900170 install:
Nobuaki Sukegawa3dd4d8e2016-03-01 01:26:56 +0900171 - travis_retry sudo apt-get update
172 - travis_retry sudo apt-get install -ym cppcheck sloccount python-flake8
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900173 script:
174 # Compiler cppcheck (All)
175 - cppcheck --force --quiet --inline-suppr --enable=all -j2 compiler/cpp/src
176 # C++ cppcheck (All)
177 - cppcheck --force --quiet --inline-suppr --enable=all -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp
178 # C Glib cppcheck (All)
179 - cppcheck --force --quiet --inline-suppr --enable=all -j2 lib/c_glib/src lib/c_glib/test test/c_glib/src tutorial/c_glib
180 # Silent error checks
181 - cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 compiler/cpp/src
182 - cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp
183 - 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 +0900184 # Python code style
185 - flake8 --ignore=E501 lib/py
186 - flake8 tutorial/py
187 - flake8 --ignore=E501 test/py
188 - flake8 test/py.twisted
189 - flake8 test/py.tornado
190 - flake8 --ignore=E501 test/test.py
191 - flake8 --ignore=E501 test/crossrunner
192 - flake8 test/features
193 # TODO etc
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900194 - grep -r TODO *
195 - grep -r FIXME *
196 - grep -r HACK *
197 # LoC
198 - sloccount .
199 # System Info
200 - dpkg -l
201 - uname -a