blob: f341bdf20ce86c43cea97e8ce3275f8379402da1 [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
23
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090024services:
25 - docker
Roger Meiera0836f62013-05-05 00:19:38 +020026
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090027install:
Nobuaki Sukegawa0156aae2015-12-09 23:21:29 +090028 - docker pull thrift/$DISTRO:latest || true
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090029 - cp -r ./build/docker/scripts/*.sh ./build/docker/$DISTRO/scripts/
30 - docker build -q -t thrift-build build/docker/$DISTRO
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +090031
32script:
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090033 - docker run $BUILD_ENV -v $(pwd):/thrift/src -it thrift-build $BUILD_CMD $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 Sukegawaa6ab1f52015-11-28 15:04:39 +090038 - BUILD_CMD="none"
39 - BUILD_ARG=""
40 - BUILD_ENV="-e CC=clang -e CXX=clang++"
41 - DISTRO=ubuntu
henriquec0a7d722014-07-26 13:11:12 +020042
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +090043 matrix:
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090044 # TODO: Break up by protocol types to avoid 50min limit
45 - TEST_NAME="Cross Language Tests"
46 BUILD_CMD="../cross-test.sh"
47 BUILD_ARG="--enable-tutorial=no"
48 BUILD_ENV="-e CC=clang -e CXX=clang++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
Roger Meier41ad4342015-03-24 22:30:40 +010049
Roger Meier447294f2015-12-11 00:04:41 +010050 - TEST_NAME="Cross Language Tests (Debian)"
51 BUILD_CMD="../cross-test.sh"
52 BUILD_ARG="--enable-tutorial=no"
53 BUILD_ENV="-e CC=clang -e CXX=clang++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
54 DISTRO=debian
55
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090056 # TODO: Remove them once migrated to CMake
57 # Autotools builds
58 - TEST_NAME="C C++ C# D Erlang Go Haxe (automake)"
59 BUILD_CMD="../autotools.sh"
60 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 +090061
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090062 - TEST_NAME="C C++ - GCC (automake)"
63 BUILD_CMD="../autotools.sh"
64 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 Sukegawae58ed1a2015-11-23 19:23:43 +090065
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090066 - TEST_NAME="Java Lua Perl PHP Python Ruby (automake)"
67 BUILD_CMD="../autotools.sh"
68 BUILD_ARG="--without-cpp --without-haskell --without-c_glib --without-csharp --without-d --without-dart --without-erlang --without-go --without-haxe"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +090069
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090070 # Tutorial build is unstable
71 - TEST_NAME="Dart (automake)"
72 BUILD_CMD="../autotools.sh"
73 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"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +090074
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090075 # These are flaky and also have lengthy output
76 - TEST_NAME="Haskell Node.js (automake)"
77 BUILD_CMD="../autotools.sh"
78 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 +090079
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090080 # CMake build
81 - TEST_NAME="All"
82 BUILD_CMD="../cmake.sh"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +090083
Roger Meier447294f2015-12-11 00:04:41 +010084 - TEST_NAME="All (Debian)"
85 BUILD_CMD="../cmake.sh"
86 DISTRO=debian
87
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090088 - TEST_NAME="C C++ - GCC"
89 BUILD_CMD="../cmake.sh"
90 BUILD_ARG="-DWITH_PYTHON=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
91 BUILD_ENV="-e CC=gcc -e CXX=g++"
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +090092
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090093 - TEST_NAME="C++ (Boost Thread)"
94 BUILD_CMD="../cmake.sh"
95 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"
99 BUILD_ARG="-DWITH_BOOSTTHREADS=ON -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
100 BUILD_ENV="-e CC=gcc -e CXX=g++"
101
102 - TEST_NAME="C++ (Std Thread)"
103 BUILD_CMD="../cmake.sh"
104 BUILD_ARG="-DWITH_STDTHREADS=ON -DCMAKE_CXX_FLAGS='-std=c++11' -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
105
106 - TEST_NAME="C++ (Std Thread - GCC)"
107 BUILD_CMD="../cmake.sh"
108 BUILD_ARG="-DWITH_STDTHREADS=ON -DCMAKE_CXX_FLAGS='-std=c++11' -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
109 BUILD_ENV="-e CC=gcc -e CXX=g++"
110
111 - TEST_NAME="Compiler (mingw)"
112 BUILD_CMD="../cmake.sh"
113 BUILD_ARG="-DCMAKE_TOOLCHAIN_FILE=../build/cmake/mingw32-toolchain.cmake -DBUILD_COMPILER=ON -DBUILD_LIBRARIES=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF"
114 BUILD_ENV=""
115
116 - TEST_NAME="All (CentOS)"
117 BUILD_CMD="../cmake.sh"
118 DISTRO=centos
119
120 - TEST_NAME="C C++ - GCC (CentOS)"
121 BUILD_CMD="../cmake.sh"
122 BUILD_ARG="-DWITH_PYTHON=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
123 BUILD_ENV="-e CC=gcc -e CXX=g++"
124 DISTRO=centos
125
Nobuaki Sukegawa33744b02016-01-03 14:24:39 +0900126 - TEST_NAME="Python 2.6 (CentOS 6)"
127 BUILD_CMD="../cmake.sh"
128 BUILD_ARG="-DWITH_PYTHON=ON -DWITH_CPP=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
129 BUILD_ENV="-e CC=gcc -e CXX=g++"
130 DISTRO=centos6
131
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900132 # Distribution
133 - TEST_NAME="make dist"
134 BUILD_CMD="../make-dist.sh"
135 BUILD_ENV="-e CC=gcc -e CXX=g++"
136
137 - TEST_NAME="Debian Packages"
138 BUILD_CMD="../dpkg.sh"
139 BUILD_ENV="-e CC=gcc -e CXX=g++"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900140
Roger Meier447294f2015-12-11 00:04:41 +0100141 - TEST_NAME="make dist (Debian)"
142 BUILD_CMD="../make-dist.sh"
143 BUILD_ENV="-e CC=gcc -e CXX=g++"
144 DISTRO=debian
145
146 - TEST_NAME="Debian Packages (Debian)"
147 BUILD_CMD="../dpkg.sh"
148 BUILD_ENV="-e CC=gcc -e CXX=g++"
149 DISTRO=debian
150
henriqueac8d8e22014-07-23 23:31:04 +0200151matrix:
152 include:
Roger Meier5effab62014-11-16 22:31:33 +0100153 # QA jobs for code analytics and metrics
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900154 #
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900155 # static code analysis with cppcheck
156 # add --error-exitcode=1 to --enable=all as soon as everything is fixed
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900157 - env: TEST_NAME="cppcheck"
158 install:
159 - sudo apt-get update
160 - sudo apt-get install cppcheck
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900161 script:
162 # Compiler cppcheck (All)
163 - cppcheck --force --quiet --inline-suppr --enable=all -j2 compiler/cpp/src
164 # C++ cppcheck (All)
165 - cppcheck --force --quiet --inline-suppr --enable=all -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp
166 # C Glib cppcheck (All)
167 - cppcheck --force --quiet --inline-suppr --enable=all -j2 lib/c_glib/src lib/c_glib/test test/c_glib/src tutorial/c_glib
168 # Silent error checks
169 - cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 compiler/cpp/src
170 - cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp
171 - cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/c_glib/src lib/c_glib/test test/c_glib/src tutorial/c_glib
Roger Meier5effab62014-11-16 22:31:33 +0100172
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900173 # search for TODO etc within source tree
Roger Meier5effab62014-11-16 22:31:33 +0100174 # some statistics about the code base
Roger Meier5effab62014-11-16 22:31:33 +0100175 # some info about the build machine
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900176 - env: TEST_NAME="TODO FIXME HACK, LoC and system info"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900177 install:
178 - sudo apt-get update
179 - sudo apt-get install sloccount
Roger Meier5effab62014-11-16 22:31:33 +0100180 script:
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900181 - grep -r TODO *
182 - grep -r FIXME *
183 - grep -r HACK *
184 # LoC
185 - sloccount .
186 # System Info
187 - dpkg -l
188 - uname -a