This repository has been archived by the owner on Oct 30, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 11
/
.travis.yml
149 lines (143 loc) · 4.81 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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
language: node_js
sudo: false
# enable c++11/14 builds
addons:
apt:
sources: [ 'ubuntu-toolchain-r-test' ]
packages: [ 'libstdc++-4.9-dev' ]
install:
# set up the environment by installing mason and clang++
- ./scripts/setup.sh --config local.env
# put mason and clang++ on PATH
- source local.env
- node -v
- which node
- clang++ -v
- which clang++
- make ${BUILDTYPE}
# run tests
# We use before_script rather than script to ensure fast failure (the script section continues even after an error)
# https://docs.travis-ci.com/user/customizing-the-build#Breaking-the-Build
before_script:
- npm test
# after successful tests, publish binaries if specified in commit message
- ./scripts/publish.sh --toolset=${TOOLSET:-} --debug=$([ "${BUILDTYPE}" == 'debug' ] && echo "true" || echo "false")
# override script default (npm test) to do nothing (we test in before_script)
script:
- true
# the matrix allows you to specify different operating systems and environments to
# run your tests and build binaries
matrix:
include:
# linux publishable node v6
- os: linux
env: BUILDTYPE=release
node_js: 10
# linux publishable node v6/debug
- os: linux
env: BUILDTYPE=debug
node_js: 10
# linux publishable node v6
- os: linux
env: BUILDTYPE=release
node_js: 8
# linux publishable node v6/debug
- os: linux
env: BUILDTYPE=debug
node_js: 8
# linux publishable node v6
- os: linux
env: BUILDTYPE=release
node_js: 6
# linux publishable node v6/debug
- os: linux
env: BUILDTYPE=debug
node_js: 6
# osx publishable node v6
- os: osx
osx_image: xcode8.2
env: BUILDTYPE=release
node_js: 10
# osx publishable node v6
- os: osx
osx_image: xcode8.2
env: BUILDTYPE=release
node_js: 8
# osx publishable node v6
- os: osx
osx_image: xcode8.2
env: BUILDTYPE=release
node_js: 6
# Sanitizer build node v4/Debug
- os: linux
env: BUILDTYPE=debug TOOLSET=asan
node_js: 6
sudo: required
# Overrides `install` to set up custom asan flags
install:
- ./scripts/setup.sh --config local.env
# put mason and clang++ on PATH
- source local.env
# Note: to build without stopping on errors remove the -fno-sanitize-recover=all flag
# You might want to do this if there are multiple errors and you want to see them all before fixing
- export CXXFLAGS="${MASON_SANITIZE_CXXFLAGS} -fno-sanitize-recover=all"
- export LDFLAGS="${MASON_SANITIZE_LDFLAGS}"
- make ${BUILDTYPE}
# Overrides `script` to disable asan LD_PRELOAD before publishing
before_script:
- export LD_PRELOAD=${MASON_LLVM_RT_PRELOAD}
- export ASAN_OPTIONS=fast_unwind_on_malloc=0:${ASAN_OPTIONS}
- npm test
- unset LD_PRELOAD
# after successful tests, publish binaries if specified in commit message
- ./scripts/publish.sh --toolset=${TOOLSET:-} --debug=$([ "${BUILDTYPE}" == 'debug' ] && echo "true" || echo "false")
# g++ build (default builds all use clang++)
- os: linux
env: BUILDTYPE=debug CXX="g++-6" CC="gcc-6"
node_js: 6
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- libstdc++-6-dev
- g++-6
# Overrides `install` to avoid initializing clang toolchain
install:
- make ${BUILDTYPE}
# Overrides `script` to disable publishing
before_script:
- npm test
# Coverage build
- os: linux
env: BUILDTYPE=debug CXXFLAGS="--coverage" LDFLAGS="--coverage"
node_js: 6
# Overrides `script` to publish coverage data to codecov
before_script:
- npm test
# Clang format build
- os: linux
# can be generic since we don't need nodejs to run formatting
language: generic
env: CLANG_FORMAT
# Overrides `install` to avoid initializing clang toolchain
install:
# Run the clang-format script. Any code formatting changes
# will trigger the build to fail (idea here is to get us to pay attention
# and get in the habit of running these locally before committing)
- make format
# Overrides `script`, no need to run tests
before_script:
# Clang tidy build
- os: linux
env: CLANG_TIDY
node_js: 6
# Overrides `install` to avoid initializing clang toolchain
install:
# First run the clang-tidy target
# Any code formatting fixes automatically applied by clang-tidy
# will trigger the build to fail (idea here is to get us to pay attention
# and get in the habit of running these locally before committing)
- make tidy
# Overrides `script`, no need to run tests
before_script: