diff --git a/.travis.yml b/.travis.yml index 2b392c798aced..7929ad071f14c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,21 +1,34 @@ -sudo: false -language: rust +# Request an environment that provides sudo (that goes with larger containers) +# and a minimal language environment. +sudo: true +language: minimal + +cache: cargo + branches: only: - master -cache: cargo +env: + global: + - CARGO_TARGET_DIR=/tmp/polkadot-target + - RUST_BACKTRACE=1 + matrix: + - RUST_TOOLCHAIN=stable TARGET=wasm + - RUST_TOOLCHAIN=nightly TARGET=native -matrix: - fast_finish: false - include: - - rust: stable +before_install: + # Check how much space we've got on this machine. + - df -h script: - - cargo test --all - - cargo clean - - ./init.sh - - ./build.sh - - if [ "$TRAVIS_PULL_REQUEST" != "true" ] && [ "$TRAVIS_BRANCH" == "master" ]; then - ./publish-wasm.sh; + - ./ci/script.sh + +after_success: + - if [ "$TARGET" == "wasm" ] && [ "$TRAVIS_PULL_REQUEST" != "true" ] && [ "$TRAVIS_BRANCH" == "master" ]; then + ./ci/publish-wasm.sh; fi + +after_script: + # Check how much free disk space left after the build + - df -h diff --git a/publish-wasm.sh b/ci/publish-wasm.sh similarity index 100% rename from publish-wasm.sh rename to ci/publish-wasm.sh diff --git a/ci/script.sh b/ci/script.sh new file mode 100755 index 0000000000000..f983be0b00d44 --- /dev/null +++ b/ci/script.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -eux + +# Install rustup and the specified rust toolchain. +curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=$RUST_TOOLCHAIN -y + +# Load cargo environment. Specifically, put cargo into PATH. +source ~/.cargo/env + +case $TARGET in + "native") + sudo apt-get -y update + sudo apt-get install -y cmake pkg-config libssl-dev + + cargo test --all + ;; + + "wasm") + # Install prerequisites and build all wasm projects + ./init.sh + ./build.sh + ;; +esac