forked from mapbox/node-fontnik
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
176 lines (170 loc) · 6.07 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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
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}
# *Here we run tests*
# We prefer running tests in the 'before_script' section rather than 'script' to ensure fast failure.
# Be aware that if you use the 'script' section it will continue running all commands in the section even if one line fails.
# This is documented at https://docs.travis-ci.com/user/customizing-the-build#Breaking-the-Build
# We don't want this behavior because otherwise we might risk publishing builds when the tests did not pass.
# For this reason, we disable the 'script' section below, since we prefer using 'before_script'.
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")
# We set 'script' here to an empty array to prevent this section from automatically running 'npm test'
# The reason we do this is mentioned above in the comment about the 'before_script' stage.
# For reference, the default travis behavior which we override comes from https://github.com/travis-ci/travis-build/blob/e5a45cbf49e0d9e27398e76e5f25dd7706feb6aa/lib/travis/build/script/node_js.rb#L62-L69.
script:
# the matrix allows you to specify different operating systems and environments to
# run your tests and build binaries
matrix:
include:
# linux publishable node v4/release
- os: linux
env: BUILDTYPE=release
node_js: 4
# linux publishable node v4/debug
- os: linux
env: BUILDTYPE=debug
node_js: 4
# 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
# linux publishable node v8
- os: linux
env: BUILDTYPE=release
node_js: 8
# linux publishable node v8/debug
- os: linux
env: BUILDTYPE=debug
node_js: 8
# linux publishable node v8
- os: linux
env: BUILDTYPE=release
node_js: 10
# linux publishable node v8/debug
- os: linux
env: BUILDTYPE=debug
node_js: 10
# osx publishable node v4
- os: osx
osx_image: xcode8.2
env: BUILDTYPE=release
node_js: 4
# osx publishable node v6
- os: osx
osx_image: xcode8.2
env: BUILDTYPE=release
node_js: 6
# 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: 10
# Sanitizer build node v4/Debug
- os: linux
env: BUILDTYPE=debug TOOLSET=asan
node_js: 4
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")
script:
- true
# g++ build (default builds all use clang++)
- os: linux
env: BUILDTYPE=debug CXX="g++-6" CC="gcc-6"
node_js: 4
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: 4
# Overrides `script` to publish coverage data to codecov
before_script:
- npm test
- mason install llvm-cov ${MASON_LLVM_RELEASE}
- mason link llvm-cov ${MASON_LLVM_RELEASE}
- which llvm-cov
- pip install --user codecov
- codecov --gcov-exec "llvm-cov gcov"
# avoid double-run of npm test
script:
- true
# 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: 4
# 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: