forked from mapnik/node-mapnik
-
Notifications
You must be signed in to change notification settings - Fork 2
/
.travis.yml
141 lines (136 loc) · 4.92 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
language: node_js
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 distclean
- make ${BUILDTYPE}
# Build should be standalone now, so remove mason deps
- rm -rf mason_packages
# 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:
- source scripts/postgis/setup_and_run.sh
- 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 Release
- os: linux
env: BUILDTYPE=release
node_js: 12
# osx publishable Release
- os: osx
osx_image: xcode11
env: BUILDTYPE=release
node_js: 12
# linux publishable Debug
- os: linux
env: BUILDTYPE=debug
node_js: 12
# osx publishable
- os: osx
osx_image: xcode11
env: BUILDTYPE=debug
node_js: 12
# Sanitizer build
- os: linux
env: BUILDTYPE=debug TOOLSET=-asan
node_js: 12
# Overrides `before_script` to disable publishing and 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 distclean
- make ${BUILDTYPE}
# Overrides `before_script` to disable asan LD_PRELOAD before publishing
before_script:
- export LD_PRELOAD=${MASON_LLVM_RT_PRELOAD}
# TODO: re-enable detect_leaks=0 once we can build and test against an asan sanitized libc++
- export ASAN_OPTIONS=fast_unwind_on_malloc=0:detect_leaks=0:${ASAN_OPTIONS}
- source scripts/postgis/setup_and_run.sh
- 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: 12
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- libstdc++-6-dev
- g++-6
# Overrides `install` to avoid initializing clang toolchain
install:
- make distclean
- make ${BUILDTYPE}
# Overrides `before_script` to disable publishing
before_script:
# manually initialize mason (avoid sourcing local.env since we don't want to use clang++ here)
- ./scripts/setup.sh --config local.env
- export PATH=$(pwd)/.mason:${PATH}
- source scripts/postgis/setup_and_run.sh
- npm test
# test building with out SSE_MATH enabled
- os: linux
env: BUILDTYPE=release SSE_MATH=false
node_js: 12
# Overrides `before_script` to disable publishing
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:
- make format
# Overrides `script`, no need to run tests
before_script:
- echo "skipping tests.."
# Clang tidy build
- os: linux
env: CLANG_TIDY
node_js: 12
# Overrides `install` to avoid initializing clang toolchain
install:
- make tidy
# Overrides `script`, no need to run tests
before_script:
- echo "skipping tests.."
# Coverage build
- os: linux
env: BUILDTYPE=debug CXXFLAGS="--coverage" LDFLAGS="--coverage"
node_js: 12
# Overrides `before_script` to disable publishing and to publish coverage data to codecov
before_script:
- source scripts/postgis/setup_and_run.sh
- npm test
- mason install llvm-cov ${MASON_LLVM_RELEASE}
- mason link llvm-cov ${MASON_LLVM_RELEASE}
- which llvm-cov
- curl -S -f https://codecov.io/bash -o codecov
- chmod +x codecov
- ./codecov -x "llvm-cov gcov" -Z