blob: 400cfa146e01594c7ea5db5acf9bd9a45e4c58f4 [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
James E. King, III0ad20bd2017-09-30 15:44:16 -070022#
23# Docker Integration
James E. King, IIIcd5be7b2017-10-21 10:16:19 -040024# see: build/docker/README.md
James E. King, III0ad20bd2017-09-30 15:44:16 -070025#
James E. King, III0ad20bd2017-09-30 15:44:16 -070026
Henrique Mendonçaaba4b1f2015-06-26 20:56:18 +100027sudo: required
Nobuaki Sukegawad479e232016-02-28 11:28:19 +090028dist: trusty
James E. King, III0ad20bd2017-09-30 15:44:16 -070029language: cpp
Henrique Mendonçaaba4b1f2015-06-26 20:56:18 +100030
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090031services:
32 - docker
Roger Meiera0836f62013-05-05 00:19:38 +020033
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090034install:
James E. King, III0ad20bd2017-09-30 15:44:16 -070035 - if [[ `uname` == "Linux" ]]; then build/docker/refresh.sh; fi
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +090036
James E. King, III0ad20bd2017-09-30 15:44:16 -070037stages:
James E. King, III0ad20bd2017-09-30 15:44:16 -070038 - docker # docker images
39 - thrift # thrift build jobs
Roger Meier7ed94ef2015-04-26 16:55:35 +020040
henriqueac8d8e22014-07-23 23:31:04 +020041env:
Roger Meier5effab62014-11-16 22:31:33 +010042 global:
Nobuaki Sukegawa93fb7ea2016-09-04 17:00:11 +090043 - SCRIPT="cmake.sh"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090044 - BUILD_ARG=""
James E. King IIId907cc92018-01-12 10:43:25 -050045 - BUILD_ENV="-e CC=gcc -e CXX=g++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
James E. King IIIf5f430d2018-06-08 03:37:55 +000046 - DISTRO=ubuntu-bionic
Nobuaki Sukegawac40018b2016-02-22 21:29:13 +090047 - BUILD_LIBS="CPP C_GLIB HASKELL JAVA PYTHON TESTING TUTORIALS" # only meaningful for CMake builds
James E. King, III0ad20bd2017-09-30 15:44:16 -070048 - TRAVIS_BUILD_STAGE=test
James E. King, IIIcd5be7b2017-10-21 10:16:19 -040049 # DOCKER_REPO (this works for all builds as a source for docker images - you can override for fork builds in your Travis settings)
50 - DOCKER_REPO="thrift/thrift-build"
51 # DOCKER_USER (provide in your Travis settings if you want to build and update docker images once, instead of on every job)
52 # DOCKER_PASS (same)
henriquec0a7d722014-07-26 13:11:12 +020053
James E. King, III0ad20bd2017-09-30 15:44:16 -070054jobs:
55 include:
James E. King, III0ad20bd2017-09-30 15:44:16 -070056 # ========================= stage: docker =========================
57 - stage: docker
58 script: true
59 env:
James E. King IIIf5f430d2018-06-08 03:37:55 +000060 - JOB="Docker Build ubuntu-xenial 16.04 LTS"
James E. King, III0ad20bd2017-09-30 15:44:16 -070061 - DISTRO=ubuntu-xenial
62 - TRAVIS_BUILD_STAGE=docker
63 - script: true
64 env:
James E. King IIIf5f430d2018-06-08 03:37:55 +000065 - JOB="Docker Build ubuntu-bionic 18.04 LTS"
66 - DISTRO=ubuntu-bionic
James E. King, III0ad20bd2017-09-30 15:44:16 -070067 - TRAVIS_BUILD_STAGE=docker
Roger Meier41ad4342015-03-24 22:30:40 +010068
James E. King, III0ad20bd2017-09-30 15:44:16 -070069 # ========================= stage: thrift =======================
70 # ------------------------- phase: cross ------------------------
James E. King, III0ad20bd2017-09-30 15:44:16 -070071 - stage: thrift
72 script: build/docker/run.sh
James E. King, III0ad20bd2017-09-30 15:44:16 -070073 env:
74 - JOB="Cross Language Tests (Binary Protocol)"
75 - SCRIPT="cross-test.sh"
76 - BUILD_ARG="-'(binary)'"
James E. King, III65efdff2017-09-25 00:13:38 -040077
James E. King, III0ad20bd2017-09-30 15:44:16 -070078 - stage: thrift
79 script: build/docker/run.sh
James E. King, III0ad20bd2017-09-30 15:44:16 -070080 env:
81 - JOB="Cross Language Tests (Header, JSON Protocols)"
82 - SCRIPT="cross-test.sh"
83 - BUILD_ARG="-'(header|json)'"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +090084
James E. King, III0ad20bd2017-09-30 15:44:16 -070085 - stage: thrift
86 script: build/docker/run.sh
James E. King, III0ad20bd2017-09-30 15:44:16 -070087 env:
88 - JOB="Cross Language Tests (Compact and Multiplexed Protocols)"
89 - SCRIPT="cross-test.sh"
90 - BUILD_ARG="-'(compact|multiplexed)'"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +090091
James E. King, III0ad20bd2017-09-30 15:44:16 -070092 # ------------------------- phase: sca --------------------------
93 # QA jobs for code analytics and metrics
94 - stage: thrift
95 script: build/docker/run.sh
96 env:
97 - JOB="Static Code Analysis"
98 - SCRIPT="sca.sh"
James E. King, III65efdff2017-09-25 00:13:38 -040099
James E. King, III0ad20bd2017-09-30 15:44:16 -0700100 # C and C++ undefined behavior.
101 # A binary crashes if undefined behavior occurs and produces a stack trace.
102 # python is disabled, see: THRIFT-4360
103 - script: build/docker/run.sh
104 env:
105 - JOB="UBSan"
106 - SCRIPT="ubsan.sh"
James E. King, III0ad20bd2017-09-30 15:44:16 -0700107 - BUILD_ARG="--without-python --without-py3"
Roger Meier447294f2015-12-11 00:04:41 +0100108
James E. King III129f3322018-06-27 21:08:08 +0000109 # ------------------------- phase: autotools --------------------
110 # TODO: Remove them once migrated to CMake
111 - script: build/docker/run.sh
112 env:
113 - JOB="Autotools (Ubuntu Bionic)"
114 - SCRIPT="autotools.sh"
115
116 - script: build/docker/run.sh
117 env:
118 - JOB="Autotools (Ubuntu Xenial)"
119 - DISTRO=ubuntu-xenial
120 - SCRIPT="autotools.sh"
121
James E. King, III0ad20bd2017-09-30 15:44:16 -0700122 # ------------------------- phase: cmake ------------------------
123 - script: build/docker/run.sh
124 env:
James E. King IIIbf7f76b2018-02-28 17:11:05 -0500125 - JOB="CMake"
James E. King III98f379e2019-01-22 09:22:04 -0500126 - BUILD_ARG="-DCMAKE_BUILD_TYPE=Debug"
127
128 - script: build/docker/run.sh
129 env:
130 - JOB="CMake"
131 - BUILD_ARG="-DCMAKE_BUILD_TYPE=Release"
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +0900132
James E. King, III0ad20bd2017-09-30 15:44:16 -0700133 # ------------------------- phase: dist -------------------------
134 - script: build/docker/run.sh
135 env:
136 - JOB="make dist"
137 - SCRIPT="make-dist.sh"
Roger Meier447294f2015-12-11 00:04:41 +0100138
James E. King, III0ad20bd2017-09-30 15:44:16 -0700139 - script: build/docker/run.sh
140 env:
141 - JOB="Debian Packages"
142 - SCRIPT="dpkg.sh"
James E. King IIId907cc92018-01-12 10:43:25 -0500143
James E. King IIIa3a59092018-06-27 21:05:57 +0000144 # ------------------------- phase: coverity ---------------------
145 # We build the coverity scan build once monthly using a travis cron job
146 - if: (env(COVERITY_SCAN_NOTIFICATION_EMAIL) IS present) AND (branch IN (master)) AND (type IN (cron))
147 script: build/docker/run.sh
148 env:
149 - JOB="Coverity Scan"
150 - SCRIPT="covscan.sh"
Antoine Cœur08a6eb62019-07-08 18:42:09 +0800151
152 # ------------------------- phase: swift ------------------------
153 # We lint the podspec
154 - os: osx
155 osx_image: xcode10.1
156 language: swift
157 script:
158 - gem update cocoapods
159 - pod lib lint --allow-warnings --swift-version=3
160 env:
161 - JOB="pod lib lint"
162
163 - os: osx
164 osx_image: xcode10.2
165 language: swift
166 script:
167 - gem update cocoapods
168 - pod lib lint --allow-warnings --swift-version=4.0
169 - pod lib lint --allow-warnings --swift-version=4.2
170 - pod lib lint --allow-warnings --swift-version=5.0
171 env:
172 - JOB="pod lib lint"
James E. King IIIa3a59092018-06-27 21:05:57 +0000173
174 ### ------------------------- phase: osx --------------------------
James E. King IIIbf7f76b2018-02-28 17:11:05 -0500175 # disabled due to the time delays it imposes on build jobs
176 # - os: osx
177 # osx_image: xcode9
178 # script: build/docker/scripts/autotools.sh
179