forked from googleapis/google-cloud-cpp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
110 lines (104 loc) · 4.39 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# Copyright 2017 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
group: travis_latest
sudo: required
language: cpp
# TODO(#19) - this is a skeleton matrix, needs to be designed and completed.
# TODO(#62) - enable a SANITIZE_MEMORY=yes build when we eliminate the false positives
matrix:
include:
- # This is a fairly specialized entry in the matrix. It compiles the code
# using Clang's static analyzer. The static analyzer slows down the build
# so much that it can consume the full 50 minutes allocated by Travis for
# a build. Most of this time is spent building gRPC and other
# dependencies, but unfortunately the static analyzer inserts itself into
# the build process when cmake(1) creates the Makefiles. The only
# workaround that reliably works is to first build and install gRPC
# without static analysis, and then compile our code against that
# pre-installed version. Even so, this particular entry takes nearly
# 30 minutes to run, so we put it first in the matrix to start it as early
# as possible. We also disable the build on pull-requests.
os: linux
compiler: clang
env: DISTRO=ubuntu-with-grpc DISTRO_VERSION=16.04 BUILD_TYPE=Release
SCAN_BUILD=yes CMAKE_FLAGS=-DGOOGLE_CLOUD_CPP_GRPC_PROVIDER=pkg-config
install:
- # First build the usual Ubuntu image, then use that to build an image
# with gRPC already compiled and installed.
- DISTRO=ubuntu SCAN_BUILD=no ./ci/install-linux.sh
- ./ci/install-linux.sh
if: type != pull_request
- # This is the only macOS entry in the matrix. It is disabled on pull
# requests because Travis often has long backlogs for macOS.
os: osx
compiler: clang
script: ci/build-macosx.sh
if: type != pull_request
- # Compile against an installed version of gRPC.
os: linux
compiler: clang
env: DISTRO=ubuntu-with-grpc DISTRO_VERSION=17.10 BUILD_TYPE=Release
CMAKE_FLAGS=-DGOOGLE_CLOUD_CPP_GRPC_PROVIDER=pkg-config
install:
- # First build the usual Ubuntu image, then use that to build an image
# with gRPC already compiled and installed.
- DISTRO=ubuntu ./ci/install-linux.sh
- ./ci/install-linux.sh
- # Check the code formatting using clang-format, and generate the Doxygen
# documentation.
os: linux
compiler: gcc
env: DISTRO=ubuntu DISTRO_VERSION=17.10 CHECK_STYLE=yes GENERATE_DOCS=yes
- # Build with the AddressSanitizer.
os: linux
compiler: clang
env: DISTRO=ubuntu DISTRO_VERSION=16.04 BUILD_TYPE=Debug
CMAKE_FLAGS=-DSANITIZE_ADDRESS=yes
- # Build with the UndefinedBehaviorSanitizer.
os: linux
compiler: clang
env: DISTRO=ubuntu DISTRO_VERSION=16.04 BUILD_TYPE=Debug
CMAKE_FLAGS=-DSANITIZE_UNDEFINED=yes
- # Compile with clang-tidy enabled. We use Fedora for this build because
# it has a version of cmake(1) that reports clang-tidy errors.
os: linux
compiler: clang
env: DISTRO=fedora DISTRO_VERSION=27 BUILD_TYPE=Debug
CMAKE_FLAGS=-DBIGTABLE_CLIENT_CLANG_TIDY=yes
- # Generate code coverage information and upload to codecov.io.
os: linux
compiler: gcc
env: DISTRO=ubuntu DISTRO_VERSION=14.04 BUILD_TYPE=Coverage
- # Compile with exceptions disabled.
os: linux
compiler: gcc
env: DISTRO=ubuntu DISTRO_VERSION=16.04 BUILD_TYPE=Release
CMAKE_FLAGS=-DGOOGLE_CLOUD_CPP_ENABLE_CXX_EXCEPTIONS=no
- # Compile on Fedora.
os: linux
compiler: gcc
env: DISTRO=fedora DISTRO_VERSION=27
- # Compile on CentOS.
os: linux
compiler: gcc
env: DISTRO=centos DISTRO_VERSION=7 BUILD_TYPE=Release
script:
- ci/build-linux.sh
install:
- ci/install-linux.sh
after_success:
- ci/upload-codecov.sh
- ci/upload-docs.sh
notifications:
email: false