-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
122 lines (115 loc) · 5.23 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
language: node_js
sudo: false
# build options and AWS keys for publishing binaries
# note: you'll need to generate your own keys for publishing a separate project
env:
global:
- secure: FdVVvHIcKe3pa228D9A4e/sspfrg7I0T2SbXkD4EILBVahA9CBmX+ruNR/ZEKXfWtuhGf5G+/r0DOk0sT+G+hAaAx6QtFOAt+AY2dMlB0Up+f/8tr8cAWk0+Te3yUyrKXcRRqSmPx3XIcYERhQGoNNlhaivxW0juIAB5Kn4f0RqyuzsiuzZFFzRzp1cj8D9nGA3tRtiXWKBPtltVjmNH234sK6/ztlHnMo5bqbL0NJcfKGPbY35mQkgWgcbsogeoU6D6h8E1mbS0oDxo7NSJbUaF5RtWbnPemE80Gj7IBUiqvmiqZV7e1EiSgGWX/cmTLAqniTFDrdjk5YntYPi4rHOxMnDCumJ8LQP+vWXjGLxHeWjwXzNRkFLuSMqzvnaAc0URpxHpaJ997l+a1/JQDtUtX/5zVTJsZ8/RHh40QyY/WUwVpcR601SeodSQ1vO5gVghXWh7BdIPA9lwI9eBenoL3wBMRnlwvjMatXXh5uirEiZIWov7DjOl6so67IxTivDQ06TuCAURUYFB61ToYJs+hdSrw83u/AKNgm3eAcz8qeL0YQ6ReAx/bCDIu5YcXBY17yeySOF7xBNM3a7X8+9Ejbqgphik0mAjC/3Z6Uuds3GGIRZmd4XA153TvPBYUHi5tSEUSbpVtAJ5YVp2ETqp64IdChDB3NnyaMyd8b8=
- secure: VMiSV/qeHH7unlhFdnYQuVccnba8gOQG1lci1zCfcvbX3GOd6ZI6A1vu2F/AYvXreDMzCLZbLrQ0/2sdtYCvx0Lgrtz4l8myC2TBqrxJLIDkO2rx77oggZuSIo9JQkXfr8qHx2L1RDL5yxSnxY8hr1l7FLzPTF0f4rErQ6gr/kAfOiqRn5k94635mNTW76TTx0fdk8+TuUIXGUcgJiXD6+l0/d7hnHWABztEPE1YoBP4GVoGIBjSAJdU6Z6cbHWIShF4AHkbv94PpVIgpbb3Kq4wmolXKdNXIvWrs0Z/wvGIr2EYKeMcIwOudGATpfwzf1GKc7+TSa5Z3JZInQ7FBEypDzu+LYigGqAGFb8TBj+TGs8KI5iAW4ez1pDfwksNZnMSX6gg4L+3gIn1plxWQ05jagbgzm5s2/d6jPqi7ZVtedE5zQKbCd5Iwkby/TuE5hWCf06Znk7DfEt/IHpFH/2d+9CgcQiFbn7sYyWeArSbiD3eQxCkYh9EuDNSRgt7BZ9g7PglW9phXrKnTCk6VpE0QXR9ehqz/5D3QYrKOb64B1PPAeFonsWCPamxwCt2jCxaqztoBSYfoa3XXM4EMmkLC30u5qGMy9Vv19dhGEOOgZDMWnr1zsiVFMmceecOl0ivxcGkMOCauDB/fGMB4P7m3As0tqgl/59k0bWQ2m4=
# 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 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
# 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
# Sanitizer build node v4/Debug
- os: linux
env: BUILDTYPE=debug TOOLSET=asan
node_js: 4
# 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" CXXFLAGS="-Weffc++"
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
- curl -S -f https://codecov.io/bash -o codecov
- chmod +x codecov
- ./codecov -x "llvm-cov gcov" -Z