#!/usr/bin/env bash # Builds the release and creates an archive and optionally deploys to GitHub. set -ex if [[ -z "$GITHUB_REF" ]] then echo "GITHUB_REF must be set" exit 1 fi # Strip mdbook-refs/tags/ from the start of the ref. TAG=${GITHUB_REF#*/tags/} host=$(rustc -Vv | grep ^host: | sed -e "s/host: //g") target=$2 export CARGO_PROFILE_RELEASE_LTO=true cargo build --locked --bin mdbook --release --target $target cd target/$target/release case $1 in ubuntu*) asset="mdbook-$TAG-$target.tar.gz" tar czf ../../$asset mdbook ;; macos*) asset="mdbook-$TAG-$target.tar.gz" # There is a bug with BSD tar on macOS where the first 8MB of the file are # sometimes all NUL bytes. See https://github.com/actions/cache/issues/403 # and https://github.com/rust-lang/cargo/issues/8603 for some more # information. An alternative solution here is to install GNU tar, but # flushing the disk cache seems to work, too. sudo /usr/sbin/purge tar czf ../../$asset mdbook ;; windows*) asset="mdbook-$TAG-$target.zip" 7z a ../../$asset mdbook.exe ;; *) echo "OS should be first parameter, was: $1" ;; esac cd ../.. if [[ -z "$GITHUB_ENV" ]] then echo "GITHUB_ENV not set, run: gh release upload $TAG target/$asset" else echo "MDBOOK_TAG=$TAG" >> $GITHUB_ENV echo "MDBOOK_ASSET=target/$asset" >> $GITHUB_ENV fi