From d8289a6c506f7ed2c9adf1f3db1e780645a1e932 Mon Sep 17 00:00:00 2001 From: yoshihitoh Date: Wed, 19 Jun 2019 22:39:09 +0900 Subject: [PATCH] Add scripts to enable builds on Travis CI. --- .travis.yml | 42 ++++++++++++++++++++++++++++++++++++++++++ ci/before_deploy.bash | 33 +++++++++++++++++++++++++++++++++ ci/script.bash | 11 +++++++++++ 3 files changed, 86 insertions(+) create mode 100644 .travis.yml create mode 100755 ci/before_deploy.bash create mode 100755 ci/script.bash diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..805c281 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,42 @@ +language: rust +cache: cargo +env: + global: + - PROJECT_NAME: ut + - RUST_BACKTRACE: full +addons: + apt: + packages: + # For building MUSL static builds on Linux. + - musl-tools +matrix: + fast_finish: true + include: + - os: linux + rust: stable + env: TARGET=x86_64-unknown-linux-musl + - os: osx + rust: stable + env: TARGET=x86_64-apple-darwin +branches: + only: + - master + # NOTE: Need below regex to trigger deploy on push-tags + - /^\d+\.\d+\.\d+.*$/ + - /^feature\/.*$/ +script: ci/script.bash +before_deploy: ci/before_deploy.bash +deploy: + provider: releases + skip_cleanup: true + file_glob: true + file: deployment/${PROJECT_NAME}-${TRAVIS_TAG}-${TARGET}.tar.gz + on: + condition: $TRAVIS_RUST_VERSION = stable + repo: yoshihitoh/ut + branch: master + tags: true + api_key: + secure: g2jVMSchLEtb60HNCIMrn671gL0V0rQ7dtzgk0ZsFTXietGBPSSpmLx/aY8/RxvEpYwX0ME4fJStY812fPkeVrWSRhZ+vjtMorkXUMR/dU+OEzyHqwTHP3b13tIh36qyVfIuE0GH8dvQcgsK+VMdWQv2e7ymLe+rRWmpG9pSbzKUjG0KGdv9LLFuNdB26xXtsPV5bMsQkqFmRNibbXoXpNrbF/Sbwsd1sk1DahQbHmcoAN/dxjckQV3XpmVF5xQYUOdFjZUguMuV9Mcey6oQ5XnGu/4EGL4oOk/bJkvW8jAaMhX1kA8UBUvbuqDyxWbNrz6PrL5qXWPoAvfB9tSbbxwyuaV/YNV/rNZsAiqDtYtUr1TE0g5Ic1/Ca3g4P/8zOMnOv6NTtzDdgrJXh2qFx4HBrN0bqOab4lv2gU6vepHH5HhCPhPRwSB933haH1tnbGKcgBe9xng27CwADWvfNbfcAWIeDOcTFW6KVue1ltMt1fHIJzU+5sYAErwFNHLvmFDDQ2DE6iVLdEgW3Ar7ghCzEtZac6kyux5uHp5G29qi1NTZnTo+DVUpEff9whzuVrdTz8mhF1bvyA6QqDkZkR6RQUpUJhIk/0+T968Jq7kdwxLD2mu7MfHcmrZfXlIGeZRrAoqD7Ek3gHdtrIrhV7WL/rdUOSAiJLV8ouFOyhg= +notifications: + email: diff --git a/ci/before_deploy.bash b/ci/before_deploy.bash new file mode 100755 index 0000000..a839e5f --- /dev/null +++ b/ci/before_deploy.bash @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +set -exo pipefail + +PROJECT_NAME="ut" + +make_artifacts() { + cargo build --target "$TARGET" --release +} + +make_tarball() { + local tmp_dir="$(mktemp -d)" + local name="${PROJECT_NAME}-${TRAVIS_TAG}-${TARGET}" + local staging="$tmp_dir/$name" + mkdir -p "$staging/complete" + + local out_dir="$(pwd)/deployment" + mkdir -p "$out_dir" + + cp "target/$TARGET/release/$PROJECT_NAME" "$staging/$PROJECT_NAME" + strip "$staging/$PROJECT_NAME" + cp {README.md,LICENSE} "$staging" + + (cd "$tmp_dir" && tar czf "$out_dir/$name.tar.gz" "$name") + rm -rf "$tmp_dir" +} + +main() { + make_artifacts + make_tarball +} + +main diff --git a/ci/script.bash b/ci/script.bash new file mode 100755 index 0000000..758e109 --- /dev/null +++ b/ci/script.bash @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +set -exo pipefail + +main() { + rustup target add "$TARGET" + cargo build --target "$TARGET" --verbose + cargo test --target "$TARGET" --all --verbose +} + +main