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 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-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