mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-16 05:59:21 +03:00
b71f3374c5
This commit rejiggers some documentation of `wasm-bindgen` in a few significant ways: * The main landing page now has text and links to the Game of Life tutorial and `wasm-pack`. * The "whirlwind tour" was deleted as it wasn't really serving any purpose that the Game of Life plus the later references weren't already serving. * The "no modules" example was renamed to "without a bundler" * A dedicated section on "Deployment" was added which replaces the previous "No ES Modules" page. This is hopefully more descriptive and also prominently mentions the various options for deployment.
257 lines
11 KiB
YAML
257 lines
11 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.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
|
|
# Make sure the anyref pass at least compiles even if it doesn't run
|
|
- NODE_ARGS=/dev/null WASM_BINDGEN_ANYREF=1 cargo test --target wasm32-unknown-unknown --test wasm
|
|
# 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 without-a-bundler`; 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-interpreter tests work alright
|
|
- name: "test wasm-bindgen-wasm-interpreter 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-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
|