blob: b771d70a4a54603ed4f2c36e4cb55a8cbb073e1a [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
Jiayu Liu096a0612022-10-11 11:46:25 +080020# build Apache Thrift on Travis CI - https://travis-ci.com/
Roger Meiera0836f62013-05-05 00:19:38 +020021
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
Jiayu Liua8fded42022-04-19 17:30:34 +080025#
James E. King, III0ad20bd2017-09-30 15:44:16 -070026
Henrique Mendonçaaba4b1f2015-06-26 20:56:18 +100027sudo: required
Jiayu Liua8fded42022-04-19 17:30:34 +080028# https://docs.travis-ci.com/user/reference/linux
Jiayu Liuf027dee2022-09-19 14:26:37 +080029dist: focal
James E. King, III0ad20bd2017-09-30 15:44:16 -070030language: cpp
Henrique Mendonçaaba4b1f2015-06-26 20:56:18 +100031
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090032services:
33 - docker
Roger Meiera0836f62013-05-05 00:19:38 +020034
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090035install:
Jiayu Liu40496a72022-04-22 11:37:03 +080036 # https://docs.travis-ci.com/user/common-build-problems/#build-times-out-because-no-output-was-received
37 # adding `travis_wait` because kerl building in the docker file takes >10 min for building erlang
38 # without printing to stdout, resulting in build failures
Jiayu Liu684ee072022-04-22 20:56:29 +080039 - if [[ `uname` == "Linux" ]]; then travis_wait 40 build/docker/refresh.sh; fi
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +090040
James E. King, III0ad20bd2017-09-30 15:44:16 -070041stages:
James E. King, III0ad20bd2017-09-30 15:44:16 -070042 - docker # docker images
43 - thrift # thrift build jobs
Roger Meier7ed94ef2015-04-26 16:55:35 +020044
henriqueac8d8e22014-07-23 23:31:04 +020045env:
Roger Meier5effab62014-11-16 22:31:33 +010046 global:
Nobuaki Sukegawa93fb7ea2016-09-04 17:00:11 +090047 - SCRIPT="cmake.sh"
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090048 - BUILD_ARG=""
James E. King IIId907cc92018-01-12 10:43:25 -050049 - BUILD_ENV="-e CC=gcc -e CXX=g++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
Jiayu Liu4f727882022-09-28 07:39:20 +080050 - DISTRO=ubuntu-bionic
Jens Geyer66d89762021-03-20 18:07:17 +010051 - BUILD_LIBS="CPP C_GLIB JAVA PYTHON TESTING TUTORIALS" # only meaningful for CMake builds
James E. King, III0ad20bd2017-09-30 15:44:16 -070052 - TRAVIS_BUILD_STAGE=test
James E. King, IIIcd5be7b2017-10-21 10:16:19 -040053 # DOCKER_REPO (this works for all builds as a source for docker images - you can override for fork builds in your Travis settings)
54 - DOCKER_REPO="thrift/thrift-build"
55 # DOCKER_USER (provide in your Travis settings if you want to build and update docker images once, instead of on every job)
56 # DOCKER_PASS (same)
henriquec0a7d722014-07-26 13:11:12 +020057
James E. King, III0ad20bd2017-09-30 15:44:16 -070058jobs:
59 include:
James E. King, III0ad20bd2017-09-30 15:44:16 -070060 # ========================= stage: docker =========================
61 - stage: docker
62 script: true
63 env:
James E. King IIIf5f430d2018-06-08 03:37:55 +000064 - JOB="Docker Build ubuntu-bionic 18.04 LTS"
65 - DISTRO=ubuntu-bionic
James E. King, III0ad20bd2017-09-30 15:44:16 -070066 - TRAVIS_BUILD_STAGE=docker
Jiayu Liuf027dee2022-09-19 14:26:37 +080067 - script: true
68 env:
69 - JOB="Docker Build ubuntu-focal 20.04 LTS"
70 - DISTRO=ubuntu-focal
71 - TRAVIS_BUILD_STAGE=docker
Jiayu Liu564b2872022-10-12 11:42:38 +080072 - script: true
73 env:
74 - JOB="Docker Build ubuntu-jammy 22.04 LTS"
75 - DISTRO=ubuntu-jammy
76 - TRAVIS_BUILD_STAGE=docker
Roger Meier41ad4342015-03-24 22:30:40 +010077
James E. King, III0ad20bd2017-09-30 15:44:16 -070078 # ========================= stage: thrift =======================
79 # ------------------------- phase: cross ------------------------
James E. King, III0ad20bd2017-09-30 15:44:16 -070080 - stage: thrift
81 script: build/docker/run.sh
James E. King, III0ad20bd2017-09-30 15:44:16 -070082 env:
83 - JOB="Cross Language Tests (Binary Protocol)"
84 - SCRIPT="cross-test.sh"
85 - BUILD_ARG="-'(binary)'"
James E. King, III65efdff2017-09-25 00:13:38 -040086
James E. King, III0ad20bd2017-09-30 15:44:16 -070087 - stage: thrift
88 script: build/docker/run.sh
James E. King, III0ad20bd2017-09-30 15:44:16 -070089 env:
90 - JOB="Cross Language Tests (Header, JSON Protocols)"
91 - SCRIPT="cross-test.sh"
92 - BUILD_ARG="-'(header|json)'"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +090093
James E. King, III0ad20bd2017-09-30 15:44:16 -070094 - stage: thrift
95 script: build/docker/run.sh
James E. King, III0ad20bd2017-09-30 15:44:16 -070096 env:
97 - JOB="Cross Language Tests (Compact and Multiplexed Protocols)"
98 - SCRIPT="cross-test.sh"
99 - BUILD_ARG="-'(compact|multiplexed)'"
Nobuaki Sukegawae58ed1a2015-11-23 19:23:43 +0900100
James E. King, III0ad20bd2017-09-30 15:44:16 -0700101 # ------------------------- phase: sca --------------------------
102 # QA jobs for code analytics and metrics
103 - stage: thrift
104 script: build/docker/run.sh
105 env:
106 - JOB="Static Code Analysis"
107 - SCRIPT="sca.sh"
James E. King, III65efdff2017-09-25 00:13:38 -0400108
James E. King, III0ad20bd2017-09-30 15:44:16 -0700109 # C and C++ undefined behavior.
110 # A binary crashes if undefined behavior occurs and produces a stack trace.
111 # python is disabled, see: THRIFT-4360
112 - script: build/docker/run.sh
113 env:
114 - JOB="UBSan"
115 - SCRIPT="ubsan.sh"
James E. King, III0ad20bd2017-09-30 15:44:16 -0700116 - BUILD_ARG="--without-python --without-py3"
Roger Meier447294f2015-12-11 00:04:41 +0100117
James E. King III129f3322018-06-27 21:08:08 +0000118 # ------------------------- phase: autotools --------------------
119 # TODO: Remove them once migrated to CMake
Jiayu Liu22b07812022-09-27 14:08:08 +0800120
Jiayu Liu564b2872022-10-12 11:42:38 +0800121 # TODO fix the missing python2 deps or get rid of python2
122 # - script: build/docker/run.sh
123 # env:
124 # - JOB="Autotools (Ubuntu Jammy)"
125 # - DISTRO=ubuntu-jammy
126 # - SCRIPT="autotools.sh"
127
Jiayu Liu22b07812022-09-27 14:08:08 +0800128 - script: build/docker/run.sh
129 env:
130 - JOB="Autotools (Ubuntu Focal)"
131 - DISTRO=ubuntu-focal
132 - SCRIPT="autotools.sh"
133
James E. King III129f3322018-06-27 21:08:08 +0000134 - script: build/docker/run.sh
135 env:
136 - JOB="Autotools (Ubuntu Bionic)"
Jiayu Liu22b07812022-09-27 14:08:08 +0800137 - DISTRO=ubuntu-bionic
James E. King III129f3322018-06-27 21:08:08 +0000138 - SCRIPT="autotools.sh"
139
James E. King, III0ad20bd2017-09-30 15:44:16 -0700140 # ------------------------- phase: cmake ------------------------
141 - script: build/docker/run.sh
142 env:
James E. King IIIbf7f76b2018-02-28 17:11:05 -0500143 - JOB="CMake"
James E. King III98f379e2019-01-22 09:22:04 -0500144 - BUILD_ARG="-DCMAKE_BUILD_TYPE=Debug"
145
146 - script: build/docker/run.sh
147 env:
148 - JOB="CMake"
149 - BUILD_ARG="-DCMAKE_BUILD_TYPE=Release"
Nobuaki Sukegawaa10697a2014-12-21 19:43:22 +0900150
James E. King, III0ad20bd2017-09-30 15:44:16 -0700151 # ------------------------- phase: dist -------------------------
152 - script: build/docker/run.sh
153 env:
154 - JOB="make dist"
155 - SCRIPT="make-dist.sh"
Roger Meier447294f2015-12-11 00:04:41 +0100156
James E. King, III0ad20bd2017-09-30 15:44:16 -0700157 - script: build/docker/run.sh
158 env:
159 - JOB="Debian Packages"
160 - SCRIPT="dpkg.sh"
James E. King IIId907cc92018-01-12 10:43:25 -0500161
James E. King IIIa3a59092018-06-27 21:05:57 +0000162 # ------------------------- phase: coverity ---------------------
163 # We build the coverity scan build once monthly using a travis cron job
164 - if: (env(COVERITY_SCAN_NOTIFICATION_EMAIL) IS present) AND (branch IN (master)) AND (type IN (cron))
165 script: build/docker/run.sh
166 env:
167 - JOB="Coverity Scan"
168 - SCRIPT="covscan.sh"
Antoine Cœur08a6eb62019-07-08 18:42:09 +0800169
170 # ------------------------- phase: swift ------------------------
171 # We lint the podspec
172 - os: osx
Alexander Edgeb4711a62020-04-24 14:43:03 +0100173 osx_image: xcode11.3
Antoine Cœur08a6eb62019-07-08 18:42:09 +0800174 language: swift
175 script:
176 - gem update cocoapods
Alexander Edgeb4711a62020-04-24 14:43:03 +0100177 - pod lib lint --allow-warnings --swift-version=5.1
Antoine Cœur08a6eb62019-07-08 18:42:09 +0800178 env:
179 - JOB="pod lib lint"
James E. King IIIa3a59092018-06-27 21:05:57 +0000180
181 ### ------------------------- phase: osx --------------------------
James E. King IIIbf7f76b2018-02-28 17:11:05 -0500182 # disabled due to the time delays it imposes on build jobs
183 # - os: osx
184 # osx_image: xcode9
185 # script: build/docker/scripts/autotools.sh
186