mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-11-24 06:33:33 +03:00
8d695b800d
Promote CI jobs to using stable Rust
239 lines
9.7 KiB
YAML
239 lines
9.7 KiB
YAML
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.5
|
|
|
|
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
|
|
script:
|
|
- |
|
|
for dir in `ls examples | grep -v README | grep -v asm.js | grep -v raytrace | grep -v no_modules`; do
|
|
(cd examples/$dir &&
|
|
sed -i "s|: \"webpack-dev-server\"|: \"webpack --output-path $HOME/$TRAVIS_BUILD_NUMBER/exbuild/$dir\"|" package.json &&
|
|
sed -i 's/npm install//' build.sh &&
|
|
ln -fs ../../node_modules . &&
|
|
./build.sh) || 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.11/xargo-v0.3.11-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 `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
|
|
|
|
# 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: nightly
|
|
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
|