summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathieu David <mathieudavid@mathieudavid.org>2016-03-08 17:25:52 +0100
committerMathieu David <mathieudavid@mathieudavid.org>2016-03-08 17:25:52 +0100
commit6bac41caa8b30a5b89baa63a988d9594f6461fa2 (patch)
treef290bbf662ed6bc754859b6bc91e91abe6056014
parent9e34eccb3ec07b02630ebcb51ce7983fb79d5e15 (diff)
parentb094268b68c63abced89aa19424a52c57ec69858 (diff)
Merge pull request #118 from japaric/travisv0.0.11-rc1
Travis CI: expand to test and deploy for Linux and Mac
-rw-r--r--.travis.yml117
-rw-r--r--ci/before_deploy.sh13
-rw-r--r--ci/install.sh33
-rw-r--r--ci/script.sh24
-rw-r--r--deploy.sh6
5 files changed, 175 insertions, 18 deletions
diff --git a/.travis.yml b/.travis.yml
index b880e4f8..84153918 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,20 +1,107 @@
+sudo: false
+
language: rust
-rust:
-- stable
-- beta
-- nightly
-matrix:
- allow_failure:
- - rust: nightly
+
env:
global:
- secure: l3/qEC4krRerllLQzni8j5AjngFi6pluWvBWj//1mJLoIEYwxlQ9mYxEdd9BqccWWFn3K0bVYCVC/64+tP6sRfLkZCe2gPUtwe7ITwCDbapUxmkiRObVJCs5yMQZt6idyhHUDKAXKgNCrusfI2BM3tKGBfRK7Cnn/R/7p/U9+q7D1sgJtUKp6ypVzK6A3jLNp3dFLFI19a5KmbZMVsaa7tOhtdDJjjr7ebsc9z7HMW5/OItiWU3FSauVQQlUMaCiEgFuIG7H7OnBAYWB/gNEtLuwfLqU9UjtWk/njNNRnmJ7m3y5HbQhv5H5F5mJUOq9XFlPLwPwyTeVztSGdQm6k8Pp2pgKBUjY27afBl9BWU+msmN6k0oXfhvIebiBPe/x2udiKeFik1xqOOEU1q9dF0sZiuPxCSM1n7tgWklJ8epgaRQaMPPQw9pO/2H5/ynHCJqBlw6WcdiqWtwAyyr/GEx62u/cg5IVkqb7KLmYsWzjS8wYG4CYs1eIxCw2xPZxP0FGuUXvxTBUPipFze6Z7FqxVauXtVe2D7c1P4738HZP660rmR0GYtHtKLny1QxCCK9sxd9JmcezFCSz4YeQ1od9xc0OzGJ2ullKNGizmGfYmgL6X8faNylLIEdaiHAcY16xV3L0g3fXL1Qg360UHQyj7GIv+0nqQnf+H9xRTTU=
-addons:
- apt:
- packages:
- - nodejs
- - npm
+ - PROJECT_NAME=mdBook
+
+matrix:
+ include:
+ # Stable channel
+ # TODO re-enable the i686-apple-darwin target when passcod/rsnotify#53 is fixed
+ #- os: osx
+ #env: TARGET=i686-apple-darwin
+ #rust: stable
+ - os: linux
+ env: TARGET=i686-unknown-linux-gnu
+ rust: stable
+ addons:
+ apt:
+ packages: &i686_unknown_linux_gnu
+ - gcc-multilib
+ - os: osx
+ env: TARGET=x86_64-apple-darwin
+ rust: stable
+ - os: linux
+ env: TARGET=x86_64-unknown-linux-gnu
+ rust: stable
+ addons:
+ apt:
+ packages:
+ - nodejs
+ - npm
+ - os: linux
+ env: TARGET=x86_64-unknown-linux-musl
+ rust: stable
+ # Beta channel
+ #- os: osx
+ #env: TARGET=i686-apple-darwin
+ #rust: beta
+ - os: linux
+ env: TARGET=i686-unknown-linux-gnu
+ rust: beta
+ addons:
+ apt:
+ packages: *i686_unknown_linux_gnu
+ - os: osx
+ env: TARGET=x86_64-apple-darwin
+ rust: beta
+ - os: linux
+ env: TARGET=x86_64-unknown-linux-gnu
+ rust: beta
+ - os: linux
+ env: TARGET=x86_64-unknown-linux-musl
+ rust: beta
+ # Nightly channel
+ #- os: osx
+ #env: TARGET=i686-apple-darwin
+ #rust: nightly
+ - os: linux
+ env: TARGET=i686-unknown-linux-gnu
+ rust: nightly
+ addons:
+ apt:
+ packages: *i686_unknown_linux_gnu
+ - os: osx
+ env: TARGET=x86_64-apple-darwin
+ rust: nightly
+ - os: linux
+ env: TARGET=x86_64-unknown-linux-gnu
+ rust: nightly
+ - os: linux
+ env: TARGET=x86_64-unknown-linux-musl
+ rust: nightly
+
install:
- - npm install stylus nib
+ - sh ci/install.sh
+
+script:
+ - sh ci/script.sh
+
after_success:
- - test $TRAVIS_PULL_REQUEST == "false" && test $TRAVIS_BRANCH == "master" && bash deploy.sh
+ - test $TRAVIS_PULL_REQUEST == "false" &&
+ test $TRAVIS_BRANCH == "master" &&
+ test $TARGET == "x86_64-unknown-linux-gnu" &&
+ test $TRAVIS_RUST_VERSION = "stable" &&
+ npm install stylus nib &&
+ bash deploy.sh
+
+before_deploy:
+ - sh ci/before_deploy.sh
+
+deploy:
+ provider: releases
+ api_key:
+ secure: Z1k7WqX7z+tT4+SzTh4tBBzf11VaADB4AWuEczHtylaEb/0hRs8gaiHCNSVHm/QTp0QPWQR2Vw7uKMhVuxG7I8X7h31j3A7ulYBh/iVk0DVIrtrn2Q4WOED9CpoXLuLtk2nxo9MBViFW7mw4nJe9H2Tn9o/9oEYBuwzekvW5mh4muqUuCVTr8eQVYbs3jbC9pQy5oYjOLeUnlL9Cey5VN/nAhzAtyFP+6lIMri0PKit4JtkFou/O1MEpFYlP3VGC2lFiWuByocPKBT/L45FecS9qoHq+i6+ZCPDH2eu46nuYsDbLKAkPdGvf1MdPBPwoj0vSnZbgaTisQ4hIoBngQQQPZlPaGtcdd6g6asxSfnbA9cQhClI5oZJmg+ksxQE+peE8pnbmZ10Ix0PpIkkfWdQeMdUUCQarOTkTK54Munw+X+kp1lH19j6+krQPLBYr95fPRd4b5tWsJD2+pb/UOYFEEJxMNoUHyLCrtdCO7imOwrSUcv51+Z8UudqfPpKQeszrJcntL4owip35r3sF5TsE9YfW5qssLC164IylvP32y1AcfL1jqg8b+zrqLZKanjvDOJ1dtHHuwKqxcwf7PhAf0YjAtVSH9OIYcDzmDa0EMLrq7EK0fs6NAeb5qt6CML7pZrRS3fmOxN53Fbmj81qm6TmjQjDe4dmZlELgNow=
+ file: ${PROJECT_NAME}-${TRAVIS_TAG}-${TARGET}.tar.gz
+ # don't delete the artifacts from previous phases
+ skip_cleanup: true
+ # deploy when a new tag is pushed
+ on:
+ condition: $TRAVIS_RUST_VERSION = stable
+ tags: true
+
+notifications:
+ email:
+ on_success: never
diff --git a/ci/before_deploy.sh b/ci/before_deploy.sh
new file mode 100644
index 00000000..339dc0c6
--- /dev/null
+++ b/ci/before_deploy.sh
@@ -0,0 +1,13 @@
+# `before_deploy` phase: here we package the build artifacts
+
+set -ex
+
+cargo build --target $TARGET --release
+
+mkdir staging
+
+cp target/$TARGET/release/mdbook staging
+
+cd staging
+
+tar czf ../${PROJECT_NAME}-${TRAVIS_TAG}-${TARGET}.tar.gz *
diff --git a/ci/install.sh b/ci/install.sh
new file mode 100644
index 00000000..5391fc72
--- /dev/null
+++ b/ci/install.sh
@@ -0,0 +1,33 @@
+# `install` phase: install stuff needed for the `script` phase
+
+set -ex
+
+case $TARGET in
+ # Install standard libraries needed for cross compilation
+ i686-apple-darwin | \
+ i686-unknown-linux-gnu | \
+ x86_64-unknown-linux-musl)
+ case $TRAVIS_RUST_VERSION in
+ stable)
+ # e.g. 1.6.0
+ version=$(rustc -V | cut -d' ' -f2)
+ ;;
+ *)
+ version=$TRAVIS_RUST_VERSION
+ ;;
+ esac
+ tarball=rust-std-${version}-${TARGET}
+
+ curl -Os http://static.rust-lang.org/dist/${tarball}.tar.gz
+
+ tar xzf ${tarball}.tar.gz
+
+ ${tarball}/install.sh --prefix=$(rustc --print sysroot)
+
+ rm -r ${tarball}
+ rm ${tarball}.tar.gz
+ ;;
+ # Nothing to do for native builds
+ *)
+ ;;
+esac
diff --git a/ci/script.sh b/ci/script.sh
new file mode 100644
index 00000000..8e9e0c3b
--- /dev/null
+++ b/ci/script.sh
@@ -0,0 +1,24 @@
+# `script` phase: you usually build, test and generate docs in this phase
+
+set -ex
+
+case "$TRAVIS_OS_NAME" in
+ linux)
+ host=x86_64-unknown-linux-gnu
+ ;;
+ osx)
+ host=x86_64-apple-darwin
+ ;;
+esac
+
+# NOTE Workaround for rust-lang/rust#31907 - disable doc tests when crossing
+if [ "$host" != "$TARGET" ]; then
+ if [ "$TRAVIS_OS_NAME" = "osx" ]; then
+ brew install gnu-sed --default-names
+ fi
+
+ find src -name '*.rs' -type f | xargs sed -i -e 's:\(//.\s*```\):\1 ignore,:g'
+fi
+
+cargo build --target $TARGET --verbose
+cargo test --target $TARGET --verbose
diff --git a/deploy.sh b/deploy.sh
index 0d561dd7..1f8237f9 100644
--- a/deploy.sh
+++ b/deploy.sh
@@ -15,13 +15,13 @@ cargo doc
echo -e "${CYAN}Running mdbook build${NC}"
# Run mdbook to generate the book
-target/debug/mdbook build book-example/
+target/$TARGET/debug/mdbook build book-example/
echo -e "${CYAN}Copying book to target/doc${NC}"
# Copy files from rendered book to doc root
-cp -R book-example/book/* target/doc/
+cp -R book-example/book/* target/$TARGET/doc/
-cd target/doc
+cd target/$TARGET/doc
echo -e "${CYAN}Initializing Git${NC}"
git init