summaryrefslogtreecommitdiffstats
path: root/ci
diff options
context:
space:
mode:
authorSebastian Thiel <sebastian.thiel@icloud.com>2020-02-01 13:54:48 +0800
committerSebastian Thiel <sebastian.thiel@icloud.com>2020-02-01 13:54:48 +0800
commit421072f09738756c1796809accf3d5e1890f807c (patch)
tree97b5ec50ae776e546f1f21469ae867ba4b520b16 /ci
parentd871bc044028edf6e1cdb4cdcb1c59176648c129 (diff)
Add travis support including releases
Diffstat (limited to 'ci')
-rw-r--r--ci/before_deploy.sh37
-rw-r--r--ci/install.sh27
-rw-r--r--ci/script.sh16
3 files changed, 80 insertions, 0 deletions
diff --git a/ci/before_deploy.sh b/ci/before_deploy.sh
new file mode 100644
index 0000000..05ec68c
--- /dev/null
+++ b/ci/before_deploy.sh
@@ -0,0 +1,37 @@
+# This script takes care of building your crate and packaging it for release
+
+set -ex
+
+main() {
+ # We run tests only once, and won't try to create any additional artifacts
+ if [ -n "$ENABLE_TESTS" ]; then
+ return
+ fi
+
+ local src=$(pwd) \
+ stage=
+
+ case $TRAVIS_OS_NAME in
+ linux)
+ stage=$(mktemp -d)
+ ;;
+ osx)
+ stage=$(mktemp -d -t tmp)
+ ;;
+ esac
+
+ test -f Cargo.lock || cargo generate-lockfile
+
+ cross rustc --bin $CRATE_NAME --target $TARGET --release -- -C lto
+
+ strip target/$TARGET/release/$CRATE_NAME
+ cp target/$TARGET/release/$CRATE_NAME $stage/
+
+ cd $stage
+ tar czf $src/$CRATE_NAME-$TRAVIS_TAG-$TARGET.tar.gz *
+ cd $src
+
+ rm -rf $stage
+}
+
+main
diff --git a/ci/install.sh b/ci/install.sh
new file mode 100644
index 0000000..748ad9a
--- /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 0000000..b4d6240
--- /dev/null
+++ b/ci/script.sh
@@ -0,0 +1,16 @@
+# This script takes care of testing your crate
+
+set -ex
+
+main() {
+ if [ -n "$ENABLE_TESTS" ]; then
+ make tests
+ return
+ fi
+ cross build --target $TARGET
+}
+
+# we don't run the "test phase" when doing deploys
+if [ -z $TRAVIS_TAG ]; then
+ main
+fi