forked from rustwasm/wasm-bindgen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.travis.yml
257 lines (235 loc) · 10.5 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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
language: rust
sudo: false
INSTALL_NODE_VIA_NVM: &INSTALL_NODE_VIA_NVM
|
rustup target add wasm32-unknown-unknown
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
source ~/.nvm/nvm.sh
nvm install v10.9
INSTALL_GECKODRIVER: &INSTALL_GECKODRIVER
|
curl --retry 5 -LO https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz
tar xf geckodriver-v0.21.0-linux64.tar.gz
DEPLOY_TO_GITHUB: &DEPLOY_TO_GITHUB
before_deploy:
|
name="wasm-bindgen-$TRAVIS_TAG-$TARGET"
mkdir "$name"
cp "target/$TARGET/release/wasm-bindgen" "$name/"
cp "target/$TARGET/release/wasm2es6js" "$name/"
cp "target/$TARGET/release/wasm-bindgen-test-runner" "$name/"
cp README.md LICENSE-MIT LICENSE-APACHE "$name/"
tar czvf "$name.tar.gz" "$name"
deploy:
api_key:
secure: "qCiELnEnvyKpWHDttgTNf+ElZGbWlvthu5aOIj5nYfov+h6g1+mkWnDFP6at/WPlE78zE/f/z/dL2KB2I7w/cxH/T4P1nWh0A9DvrpY6hqWkK2pgN5dPeWE/a4flI7AdH0A6wMRw7m00uMgDjlzN78v7XueccpJCxSO5allQN5jweAQvMX2QA07TbLRJc7Lq6lfVwSf8OfrcO8qCbcIzJTsC4vtbh6jkUYg1OAaU2tAYlskBy9ZYmHWCExIAu/zxzcJY9OpApPD9Ea4CyrsfjniAyRBJ87Weh/sP4XhiWeRPVmvA4HAzv4Pps9ps+Ar5QmsX53rhKQ3id7/VPR8ggaAHxrYUiJPvJRtbP6cKKOlDiK0ooP+vI4vjxWeNVj9ibEolSYOlT0ENIvPK1BppA6VgAoJOjwPr0Q16Ma4AmvLkIkowJiXCm2Jlje/5c0vPEAGJVgUtkj3jFQzgXwyEMpzxUlhHmYpmnfeaM0tK/Kiiwe1monL/ydMlyfV55kNylylCg+XoTnf420AFChKbD4DM5Z7ZsjU9g8fF3LUoN0sKpmLDp+GvwjLi9YtGogWB71Q2MFp43MSL0YLshkyYYoZKrVMiy5J9hKNUxhT2jNEq53Z69syIHHMCxHL9GoAcuHxIKOA7uTMW0aCoyy2I+dfAKKsrUGwGYaNC5LZdUQI="
file_glob: true
file:
- wasm-bindgen-$TRAVIS_TAG-$TARGET.tar.gz
on:
tags: true
provider: releases
skip_cleanup: true
if: branch = master OR branch =~ /^\d/
INSTALL_AWS: &INSTALL_AWS
|
pip install --user awscli
export PATH=$HOME/.local/bin:$PATH
mkdir -p ~/$TRAVIS_BUILD_NUMBER
before_install:
- target=x86_64-unknown-linux-musl
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then target=x86_64-apple-darwin; fi
- curl -L https://github.com/mozilla/sccache/releases/download/0.2.7/sccache-0.2.7-$target.tar.gz | tar xzf -
- export PATH=$PATH:`pwd`/sccache-0.2.7-$target
- export RUSTC_WRAPPER=sccache
after_script:
- sccache -s
matrix:
include:
# Tests for wasm-bindgen itself pass
- name: "test wasm-bindgen crate"
install:
- *INSTALL_NODE_VIA_NVM
- *INSTALL_GECKODRIVER
- export GECKODRIVER=`pwd`/geckodriver
script:
# Run a test or two that makes sure `#[wasm_bindgen]` works "reasonably"
# on non-wasm platforms
- cargo test
# Run the main body of the test suite
- cargo test --target wasm32-unknown-unknown
# Rerun the test suite but disable `--debug` in generated JS
- WASM_BINDGEN_NO_DEBUG=1 cargo test --target wasm32-unknown-unknown
# Make sure our serde tests work
- cargo test --target wasm32-unknown-unknown --features serde-serialize
# Make sure the `std` feature works if disabled
- cargo test --target wasm32-unknown-unknown -p no-std
# Make sure the `wasm-bindgen-futures` tests pass.
- cargo test -p wasm-bindgen-futures
- cargo test -p wasm-bindgen-futures --target wasm32-unknown-unknown
addons:
firefox: latest
if: branch = master
# Tests the `nightly` feature of wasm-bindgen
- rust: nightly
name: "test: wasm-bindgen crate nightly feature"
install:
- *INSTALL_NODE_VIA_NVM
script:
- cargo test --target wasm32-unknown-unknown --features nightly --test wasm
if: branch = master
# All examples work
- name: "examples - almost all examples"
install:
- *INSTALL_NODE_VIA_NVM
- *INSTALL_AWS
- npm install
- curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh -s -- -f
script:
- cargo build -p wasm-bindgen-cli
- ln -snf target/debug/wasm-bindgen $HOME/.cargo/wasm-bindgen
- |
for dir in `ls examples | grep -v README | grep -v asm.js | grep -v raytrace | grep -v no_modules`; do
(cd examples/$dir &&
ln -fs ../../node_modules . &&
npm run build -- --output-path $HOME/$TRAVIS_BUILD_NUMBER/exbuild/$dir) || exit 1;
done
- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then aws s3 sync --quiet ~/$TRAVIS_BUILD_NUMBER s3://wasm-bindgen-ci/$TRAVIS_BUILD_NUMBER; fi
if: branch = master
- rust: nightly
name: "examples - raytracer"
install:
- *INSTALL_AWS
- rustup component add rust-src
- curl -L https://github.com/japaric/xargo/releases/download/v0.3.13/xargo-v0.3.13-x86_64-unknown-linux-musl.tar.gz | tar xzf -
- export PATH=$PATH:`pwd`
script:
- sed -i 's/python/#python/' examples/raytrace-parallel/build.sh
- (cd examples/raytrace-parallel && ./build.sh)
- dst=$HOME/$TRAVIS_BUILD_NUMBER/exbuild/raytrace-parallel
- mkdir -p $dst
- cp examples/raytrace-parallel/*.{js,html,wasm} $dst
- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then aws s3 sync ~/$TRAVIS_BUILD_NUMBER s3://wasm-bindgen-ci/$TRAVIS_BUILD_NUMBER; fi
if: branch = master
# The `cli-support` crate's tests pass
- name: "test cli-support crate"
script: cargo test -p wasm-bindgen-cli-support
if: branch = master
# The `web-sys` crate's tests pass
- name: "test web-sys crate"
install:
- *INSTALL_NODE_VIA_NVM
- *INSTALL_GECKODRIVER
script:
- export RUST_LOG=wasm_bindgen_test_runner
# Test out builds with just a few features
- cargo build --manifest-path crates/web-sys/Cargo.toml --target wasm32-unknown-unknown
- cargo build --manifest-path crates/web-sys/Cargo.toml --target wasm32-unknown-unknown --features Node
- cargo build --manifest-path crates/web-sys/Cargo.toml --target wasm32-unknown-unknown --features Element
- cargo build --manifest-path crates/web-sys/Cargo.toml --target wasm32-unknown-unknown --features Window
# Now run all the tests with all the features
- GECKODRIVER=`pwd`/geckodriver cargo test --manifest-path crates/web-sys/Cargo.toml --target wasm32-unknown-unknown --all-features
addons:
firefox: latest
chrome: stable
if: branch = master
# The `js-sys` crate's tests pass
- name: "test js-sys crate"
install:
- *INSTALL_NODE_VIA_NVM
- *INSTALL_GECKODRIVER
script:
- export RUST_LOG=wasm_bindgen_test_runner
- GECKODRIVER=`pwd`/geckodriver cargo test -p js-sys --target wasm32-unknown-unknown
addons:
firefox: latest
chrome: stable
if: branch = master
# WebIDL tests pass
- name: "test wasm-bindgen-webidl crate"
install: *INSTALL_NODE_VIA_NVM
script:
- cargo test -p wasm-bindgen-webidl
- cargo test -p webidl-tests --target wasm32-unknown-unknown
if: branch = master
# UI tests for the macro work just fine
- rust: nightly
name: "test ui tests"
script: cargo test -p ui-tests
if: branch = master
# wasm-gc tests work alright
- name: "test wasm-bindgen-gc crate"
install:
- git clone https://github.com/WebAssembly/wabt
- mkdir -p wabt/build
- (cd wabt/build && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=sccache -DCMAKE_CXX_COMPILER_ARG1=c++ -DBUILD_TESTS=OFF && cmake --build . -- -j4)
- export PATH=$PATH:`pwd`/wabt/build
script:
- cargo test -p wasm-bindgen-gc
# Interpreter tests should quickly pass
- cargo test -p wasm-bindgen-wasm-interpreter
if: branch = master
# Dist linux binary
- name: "dist: Linux (x86_64-unknown-linux-musl)"
env: JOB=dist-linux TARGET=x86_64-unknown-linux-musl
before_script: rustup target add $TARGET
script:
- cargo build --manifest-path crates/cli/Cargo.toml --release --target $TARGET --features vendored-openssl
# no need to ship debuginfo to users
- strip -g target/$TARGET/release/wasm-bindgen
- strip -g target/$TARGET/release/wasm-bindgen-test-runner
- strip -g target/$TARGET/release/wasm2es6js
addons:
apt:
packages:
- musl-tools
<<: *DEPLOY_TO_GITHUB
# Dist OSX binary
- name: "dist: OSX (x86_64-apple-darwin)"
os: osx
env: JOB=dist-osx MACOSX_DEPLOYMENT_TARGET=10.7 TARGET=x86_64-apple-darwin
script: cargo build --manifest-path crates/cli/Cargo.toml --release --target $TARGET
<<: *DEPLOY_TO_GITHUB
# Build mdbook documentation
- name: "doc: Guide documentation"
install:
- mkdir -p $HOME/mdbook
- curl -L https://github.com/rust-lang-nursery/mdBook/releases/download/v0.2.1/mdbook-v0.2.1-x86_64-unknown-linux-musl.tar.gz | tar xzf - -C $HOME/mdbook
- export PATH=$PATH:$HOME/mdbook
- *INSTALL_AWS
script:
- (cd guide && mdbook build)
- rm -rf ~/$TRAVIS_BUILD_NUMBER
- mv guide/book ~/$TRAVIS_BUILD_NUMBER
- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then aws s3 sync --quiet ~/$TRAVIS_BUILD_NUMBER s3://wasm-bindgen-ci/$TRAVIS_BUILD_NUMBER; fi
if: branch = master
# Build API documentation
- rust: stable
name: "doc: API documentation"
install: *INSTALL_AWS
script:
- cargo doc --no-deps --features 'nightly serde-serialize'
- cargo doc --no-deps --manifest-path crates/js-sys/Cargo.toml
- cargo doc --no-deps --manifest-path crates/futures/Cargo.toml
- cargo doc --no-deps --manifest-path crates/web-sys/Cargo.toml --all-features
- mv target/doc ~/$TRAVIS_BUILD_NUMBER/api
- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then aws s3 sync --quiet ~/$TRAVIS_BUILD_NUMBER s3://wasm-bindgen-ci/$TRAVIS_BUILD_NUMBER; fi
if: branch = master
# Take compiled examples and mdbook/API docs and deploy them to gh-pages
- stage: deploy-gh-pages
install: *INSTALL_AWS
script:
- aws s3 sync --quiet s3://wasm-bindgen-ci/$TRAVIS_BUILD_NUMBER ~/$TRAVIS_BUILD_NUMBER
- mv ~/$TRAVIS_BUILD_NUMBER doc
deploy:
provider: pages
skip-cleanup: true
github-token: $GITHUB_TOKEN # Set in travis-ci.org dashboard, marked secure
local-dir: doc
keep-history: false
after_deploy:
- aws s3 rm --recursive s3://rust-lang-ci-sccache2/$TRAVIS_BUILD_NUMBER
if: branch = master AND type != pull_request
notifications:
email:
on_success: never