diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..e9eb90c02c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,46 @@ +# Based on the "trust" template v0.1.1 +# https://github.com/japaric/trust/tree/v0.1.1 + +dist: trusty +language: rust +services: docker +sudo: required + +matrix: + include: + - env: TARGET=x86_64-unknown-linux-gnu + rust: nightly + - env: TARGET=thumbv6m-none-eabi + rust: nightly + - env: TARGET=thumbv7m-none-eabi + rust: nightly + - env: TARGET=thumbv7em-none-eabi + rust: nightly + - env: TARGET=thumbv7em-none-eabihf + rust: nightly + +before_install: set -e + +install: + - sh ci/install.sh + - source ~/.cargo/env || true + +script: + - bash ci/script.sh + +after_script: set +e + +cache: cargo +before_cache: + # Travis can't cache files that are not readable by "others" + - chmod -R a+r $HOME/.cargo + +branches: + only: + # release tags + - /^v\d+\.\d+\.\d+.*$/ + - master + +notifications: + email: + on_success: never diff --git a/ci/install.sh b/ci/install.sh new file mode 100644 index 0000000000..748ad9a9e8 --- /dev/null +++ b/ci/install.sh @@ -0,0 +1,27 @@ +set -ex + +main() { + local target= + if [ $TRAVIS_OS_NAME = linux ]; then + target=x86_64-unknown-linux-musl + sort=sort + else + target=x86_64-apple-darwin + sort=gsort # for `sort --sort-version`, from brew's coreutils. + fi + + # This fetches latest stable release + local tag=$(git ls-remote --tags --refs --exit-code https://github.com/japaric/cross \ + | cut -d/ -f3 \ + | grep -E '^v[0.1.0-9.]+$' \ + | $sort --version-sort \ + | tail -n1) + curl -LSfs https://japaric.github.io/trust/install.sh | \ + sh -s -- \ + --force \ + --git japaric/cross \ + --tag $tag \ + --target $target +} + +main diff --git a/ci/script.sh b/ci/script.sh new file mode 100644 index 0000000000..9f83f3f4bc --- /dev/null +++ b/ci/script.sh @@ -0,0 +1,13 @@ +set -ex + +main() { + if [ $TARGET = x86_64-unknown-linux-gnu ]; then + cargo test + return + fi + + cross build --target $TARGET + cross build --target $TARGET --release +} + +main