summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan-Erik Rediger <janerik@fnordig.de>2019-07-10 15:45:44 +0200
committerGitHub <noreply@github.com>2019-07-10 15:45:44 +0200
commit52c71ad04c2ed00dddc3c04b7a08a4a3d70cbe2c (patch)
treec3b57d1fe1efd62ebcdb9e52614021654e8d4c41
parent3951f003abb890b5115acf333f3d932ab22182ea (diff)
parent11c8683faa6e6505adcb6c323c132b3527c2ff94 (diff)
Let Travis and AppVeyor deploy new releases (#4)
Let Travis and AppVeyor deploy new releases
-rw-r--r--.travis.yml65
-rw-r--r--appveyor.yml66
-rw-r--r--ci/before_deploy.ps122
-rw-r--r--ci/before_deploy.sh31
-rw-r--r--ci/install.sh47
-rw-r--r--ci/script.sh18
6 files changed, 241 insertions, 8 deletions
diff --git a/.travis.yml b/.travis.yml
index 6942f66..3af0b76 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,15 +1,64 @@
+# Based on the "trust" template v0.1.2
+# https://github.com/japaric/trust/tree/v0.1.2
+
+dist: trusty
language: rust
-sudo: false
+services: docker
+sudo: required
+
+env:
+ global:
+ - CRATE_NAME=mdbook-mermaid
+
+matrix:
+ include:
+ # Linux
+ - env: TARGET=i686-unknown-linux-gnu
+ - env: TARGET=x86_64-unknown-linux-gnu
+
+ # OSX
+ - env: TARGET=i686-apple-darwin
+ os: osx
+ - env: TARGET=x86_64-apple-darwin
+ os: osx
+
+before_install:
+ - set -e
+ - rustup self update
-rust:
- - stable
- - beta
- - nightly
+install:
+ - sh ci/install.sh
+ - source ~/.cargo/env || true
script:
- - |
- cargo build &&
- cargo test
+ - bash ci/script.sh
+
+after_script: set +e
+
+before_deploy:
+ - sh ci/before_deploy.sh
+
+deploy:
+ api_key:
+ secure: "YdR5xnlg0+hNlY7wEOKjgf1uLzEU0HQAIj3B6yMJU2y8ldPSrU6A7VXzgFAARRBUy4nLfJMuQ0mwpYSJN132t42MGpkWr/aTBOCPHWl9Na9lTvuE/9su4D0WI3FTqYWejHfWDZWPVQNu5iwPhDQLGXA5eLf4ageEyT2TRDYUTdErWjNGoeF46nbSRaqRBeFFtbmTc7J7vqZ8QAyQozRukt9GX6hpYi5tGGUP+wqSl5j19G7LobhkUKndq9R3Vg5Es3Lc2cOda7BE9j+qH18NVCHqH3LgAWYsg1sZggImM1v+7kVp4FuiEHQfdhO1u1AUGuR6YJdue8HuNzPDfE1PWjPDQDbjALdOEqMTckVn8X6rAcRiaMLD/JtH1yx1039SaHgEas7333vi3iI4b4WoyxMHVJfBIHVE4nAbyxjn+wA8vn4mm5wghs3CWBaLp2TZj+M8Wmk2ps9IXRBsBs39OkvErDOKydl/ZhAxDXh0dH4z4v/c9Wsqb2xHJglM06fJzv39Ip3dfIepdME17BRnttjWSvK6xI+hWqX1v+F2j/LJGUeS4yxFNSPKUSoOYdkFUrR+kZURelQxR+c18vcdM7AtptwHlRLBwdZv6FFn2SZEFeXEgbdKP/iziNyNkZqhOoDeM11S9wRlVMeVoLg9QFTdV6pMto7rs/sguGx1lDk="
+ file_glob: true
+ file: $CRATE_NAME-$TRAVIS_TAG-$TARGET.*
+ on:
+ condition: $TRAVIS_RUST_VERSION = stable
+ tags: true
+ provider: releases
+ skip_cleanup: true
+
+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
+ - /^\d+\.\d+\.\d+.*$/
+ - master
notifications:
email: false
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 0000000..8d35005
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,66 @@
+# Based on the "trust" template v0.1.2
+# https://github.com/japaric/trust/tree/v0.1.2
+
+environment:
+ global:
+ RUST_VERSION: stable
+
+ CRATE_NAME: mdbook-mermaid
+
+ matrix:
+ # MSVC
+ - TARGET: i686-pc-windows-msvc
+ - TARGET: x86_64-pc-windows-msvc
+
+install:
+ - ps: >-
+ If ($Env:TARGET -eq 'x86_64-pc-windows-gnu') {
+ $Env:PATH += ';C:\msys64\mingw64\bin'
+ } ElseIf ($Env:TARGET -eq 'i686-pc-windows-gnu') {
+ $Env:PATH += ';C:\msys64\mingw32\bin'
+ }
+ - curl -sSf -o rustup-init.exe https://win.rustup.rs/
+ - rustup-init.exe -y --default-host %TARGET% --default-toolchain %RUST_VERSION%
+ - set PATH=%PATH%;C:\Users\appveyor\.cargo\bin
+ - rustc -Vv
+ - cargo -V
+
+test_script:
+ # we don't run the "test phase" when doing deploys
+ - if [%APPVEYOR_REPO_TAG%]==[false] (
+ cargo test --target %TARGET% &&
+ cargo build --target %TARGET%
+ )
+
+before_deploy:
+ - cargo rustc --target %TARGET% --release --bin mdbook-mermaid -- -C lto
+ - ps: ci\before_deploy.ps1
+
+deploy:
+ artifact: /.*\.zip/
+ auth_token:
+ secure: "vibQvxC75FzMlB3z3bMPqF+56W9kDMbdIEbFkfRPG92PhSAf2ORVDDBTBC+DBtt9"
+ description: ''
+ on:
+ RUST_VERSION: stable
+ appveyor_repo_tag: true
+ provider: GitHub
+
+cache:
+ - C:\Users\appveyor\.cargo\registry
+ - target
+
+branches:
+ only:
+ # Release tags
+ - /^\d+\.\d+\.\d+.*$/
+ - master
+
+notifications:
+ - provider: Email
+ on_build_success: false
+ on_build_failure: false
+ on_build_status_changed: false
+
+# Building is done in the test phase, so we disable Appveyor's build phase.
+build: false
diff --git a/ci/before_deploy.ps1 b/ci/before_deploy.ps1
new file mode 100644
index 0000000..6f66245
--- /dev/null
+++ b/ci/before_deploy.ps1
@@ -0,0 +1,22 @@
+# This script takes care of packaging the build artifacts that will go in the
+# release zipfile
+
+$SRC_DIR = $PWD.Path
+$STAGE = [System.Guid]::NewGuid().ToString()
+
+Set-Location $ENV:Temp
+New-Item -Type Directory -Name $STAGE
+Set-Location $STAGE
+
+$ZIP = "$SRC_DIR\$($Env:CRATE_NAME)-$($Env:APPVEYOR_REPO_TAG_NAME)-$($Env:TARGET).zip"
+
+Copy-Item "$SRC_DIR\target\$($Env:TARGET)\release\mdbook-mermaid.exe" '.\'
+
+7z a "$ZIP" *
+
+Push-AppveyorArtifact "$ZIP"
+
+Remove-Item *.* -Force
+Set-Location ..
+Remove-Item $STAGE
+Set-Location $SRC_DIR
diff --git a/ci/before_deploy.sh b/ci/before_deploy.sh
new file mode 100644
index 0000000..8c90b6b
--- /dev/null
+++ b/ci/before_deploy.sh
@@ -0,0 +1,31 @@
+# This script takes care of building your crate and packaging it for release
+
+set -ex
+
+main() {
+ 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 mdbook-mermaid --target $TARGET --release -- -C lto
+
+ cp target/$TARGET/release/mdbook-mermaid $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..80e18e4
--- /dev/null
+++ b/ci/install.sh
@@ -0,0 +1,47 @@
+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
+
+ # Builds for iOS are done on OSX, but require the specific target to be
+ # installed.
+ case $TARGET in
+ aarch64-apple-ios)
+ rustup target install aarch64-apple-ios
+ ;;
+ armv7-apple-ios)
+ rustup target install armv7-apple-ios
+ ;;
+ armv7s-apple-ios)
+ rustup target install armv7s-apple-ios
+ ;;
+ i386-apple-ios)
+ rustup target install i386-apple-ios
+ ;;
+ x86_64-apple-ios)
+ rustup target install x86_64-apple-ios
+ ;;
+ esac
+
+ # 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..e61e155
--- /dev/null
+++ b/ci/script.sh
@@ -0,0 +1,18 @@
+# This script takes care of testing your crate
+
+set -ex
+
+main() {
+ cross build --target $TARGET
+
+ if [ ! -z $DISABLE_TESTS ]; then
+ return
+ fi
+
+ cross test --target $TARGET
+}
+
+# we don't run the "test phase" when doing deploys
+if [ -z $TRAVIS_TAG ]; then
+ main
+fi