157 lines
4.7 KiB
YAML
157 lines
4.7 KiB
YAML
# Configuration for Travis CI
|
|
language: rust
|
|
sudo: required
|
|
services:
|
|
- docker
|
|
|
|
stages:
|
|
- build
|
|
- test
|
|
- name: release
|
|
if: tag =~ ^v(\d+\.)*\d+$
|
|
|
|
jobs:
|
|
include:
|
|
################################
|
|
# Build stage #
|
|
################################
|
|
|
|
# Linux with Rust stable/beta/nightly
|
|
- stage: build
|
|
rust: stable
|
|
env: TARGET=x86_64-unknown-linux-gnu
|
|
cache: cargo
|
|
script: &build-script
|
|
- cargo build --verbose --all
|
|
- cargo build --no-default-features --verbose --all
|
|
- cargo build --features no-color --verbose --all
|
|
- stage: build
|
|
rust: beta
|
|
env: TARGET=x86_64-unknown-linux-gnu
|
|
cache: cargo
|
|
script: *build-script
|
|
- stage: build
|
|
rust: nightly
|
|
env: TARGET=x86_64-unknown-linux-gnu
|
|
cache: cargo
|
|
script: *build-script
|
|
|
|
# macOS with Rust stable
|
|
- stage: build
|
|
rust: stable
|
|
os: osx
|
|
env: TARGET=x86_64-apple-darwin
|
|
cache: cargo
|
|
script: *build-script
|
|
|
|
################################
|
|
# Test stage #
|
|
################################
|
|
|
|
- stage: test
|
|
env: TARGET=x86_64-unknown-linux-gnu
|
|
cache: cargo
|
|
script: cargo test --verbose --all
|
|
|
|
################################
|
|
# Release stage #
|
|
################################
|
|
|
|
# Cargo crate release
|
|
- stage: release
|
|
env: TARGET=x86_64-unknown-linux-gnu
|
|
cache: cargo
|
|
script:
|
|
- echo "Creating release crate on crates.io..."
|
|
- echo $CARGO_TOKEN | cargo login
|
|
- cargo publish --verbose
|
|
|
|
# GitHub binary release for Linux on x86/x86_64
|
|
- stage: release
|
|
rust: stable
|
|
env: TARGET=x86_64-unknown-linux-gnu TARGET_SIMPLE=linux-x64 DEB=y
|
|
cache: cargo
|
|
install: &install-github-release
|
|
- |
|
|
if [ ! $TARGET == "x86_64-unknown-linux-gnu" ] && [ ! $TARGET == "x86_64-apple-darwin" ]; then
|
|
cargo install cross
|
|
fi
|
|
- |
|
|
if [ -n "$DEB" ]; then
|
|
cargo install cargo-deb
|
|
fi
|
|
script: &script-github-release
|
|
- |
|
|
if [ $TARGET == "x86_64-unknown-linux-gnu" ] || [ $TARGET == "x86_64-apple-darwin" ]; then
|
|
echo "Creating release binary on GitHub for $TARGET..."
|
|
cargo build --release --verbose --all
|
|
cp target/release/ffsend ./ffsend
|
|
else
|
|
echo "Creating release binary on GitHub for $TARGET (cross compiled)..."
|
|
cross build --target $TARGET --release --verbose --all
|
|
cp target/$TARGET/release/ffsend ./ffsend
|
|
fi
|
|
- tar -czvf ./ffsend-$TRAVIS_TAG-$TARGET_SIMPLE.tar.gz ffsend
|
|
- |
|
|
if [ -n "$DEB" ]; then
|
|
cargo deb --verbose
|
|
fi
|
|
- mv ./ffsend ./ffsend-$TRAVIS_TAG-$TARGET_SIMPLE
|
|
deploy: &deploy-github-release
|
|
provider: releases
|
|
api_key: $GITHUB_OAUTH_TOKEN
|
|
skip_cleanup: true
|
|
overwrite: true
|
|
file_glob: true
|
|
file:
|
|
- target/debian/ffsend_*.deb
|
|
- ffsend-$TRAVIS_TAG-$TARGET_SIMPLE.tar.gz
|
|
- ffsend-$TRAVIS_TAG-$TARGET_SIMPLE
|
|
on:
|
|
tags: true
|
|
branch: master
|
|
- stage: release
|
|
rust: stable
|
|
env: TARGET=i686-unknown-linux-gnu TARGET_SIMPLE=linux-i386 DEB=y
|
|
cache: cargo
|
|
install: *install-github-release
|
|
script: *script-github-release
|
|
deploy: *deploy-github-release
|
|
|
|
# GitHub binary release for Linux on arch
|
|
- stage: release
|
|
rust: stable
|
|
env: TARGET=aarch64-unknown-linux-gnu TARGET_SIMPLE=linux-aarch64
|
|
cache: cargo
|
|
install: *install-github-release
|
|
script: *script-github-release
|
|
deploy: *deploy-github-release
|
|
- stage: release
|
|
rust: stable
|
|
env: TARGET=arm-unknown-linux-gnueabi TARGET_SIMPLE=linux-arm
|
|
cache: cargo
|
|
install: *install-github-release
|
|
script: *script-github-release
|
|
deploy: *deploy-github-release
|
|
- stage: release
|
|
rust: stable
|
|
env: TARGET=armv7-unknown-linux-gnueabihf TARGET_SIMPLE=linux-armv7
|
|
cache: cargo
|
|
install: *install-github-release
|
|
script: *script-github-release
|
|
deploy: *deploy-github-release
|
|
|
|
# GitHub binary release for macOX
|
|
- stage: release
|
|
rust: stable
|
|
os: osx
|
|
env: TARGET=x86_64-apple-darwin TARGET_SIMPLE=osx-x64
|
|
cache: cargo
|
|
install: *install-github-release
|
|
script: *script-github-release
|
|
deploy: *deploy-github-release
|
|
|
|
# TODO: add Windows architecture (using AppVeyor)
|
|
# TODO: add (Free)BSD architecture
|
|
# TODO: enfore the git tag/crate version equality for releases
|
|
# TODO: disable addons/rust installation for GitHub release job
|