Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch to trust-based CI #528

Merged
merged 13 commits into from
Feb 26, 2017
190 changes: 97 additions & 93 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,102 +1,106 @@
#
# Operating Environment
#
language: rust
sudo: false
# Based on the "trust" template v0.1.1
# https://github.com/japaric/trust/tree/v0.1.1

dist: trusty
services:
- docker
addons:
apt:
packages:
- gcc-multilib
- libcurl4-openssl-dev
- libelf-dev
- libdw-dev
- binutils-dev

rust:
- 1.7.0 # Oldest supported version
- stable
- beta
- nightly

#
# Environment Variables and Build Matrix
#
language: rust
services: docker
sudo: required

# This is the Rust channel that build jobs will use by default but can be
# overridden on a case by case basis down below
rust: stable

env:
global:
- PATH=$HOME/.local/bin:$PATH
- TRAVIS_CARGO_NIGHTLY_FEATURE=""
matrix:
- ARCH=x86_64
- ARCH=i686
- CRATE_NAME=nix

os: # OSX included in build matrix explicitly
- linux
# default job
- TARGET=x86_64-unknown-linux-gnu

# Failures on nightly shouldn't fail the overall build.
matrix:
fast_finish: true
# These are all the build jobs. Adjust as necessary. Comment out what you
# don't need
include:
# 32-bit and 64-bit OSX builds on oldest/stable
- os: osx
env: ARCH=x86_64
rust: stable
- os: osx
env: ARCH=i686
rust: stable
# Docker builds for other targets
- os: linux
env: TARGET=aarch64-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:arm
rust: 1.7.0
sudo: true
- os: linux
env: TARGET=arm-unknown-linux-gnueabihf DOCKER_IMAGE=posborne/rust-cross:arm
rust: 1.7.0
sudo: true
- os: linux
env: TARGET=mips-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:mips
rust: 1.7.0
sudo: true
- os: linux
env: TARGET=mipsel-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:mips
rust: 1.7.0
sudo: true
- os: linux
env: TARGET=arm-linux-androideabi DOCKER_IMAGE=posborne/rust-cross:android
rust: 1.7.0
sudo: true
allow_failures:
- rust: nightly
# We need to upgrade the lowest supported version. However, the build
# infrastructure for arm/mips/android is not ready yet.
- rust: 1.7.0
- env: TARGET=mips-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:mips
- env: TARGET=mipsel-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:mips
- env: TARGET=arm-linux-androideabi DOCKER_IMAGE=posborne/rust-cross:android


#
# Build/Test/Deploy Steps
#
before_script:
- pip install 'travis-cargo<0.2' --user
# Linux
- env: TARGET=i686-unknown-linux-gnu
- env: TARGET=i686-unknown-linux-musl
# - env: TARGET=x86_64-unknown-linux-gnu # this is the default job
- env: TARGET=x86_64-unknown-linux-musl

# OSX
- env: TARGET=i686-apple-darwin
os: osx
- env: TARGET=x86_64-apple-darwin
os: osx

# *BSD
- env: TARGET=i686-unknown-freebsd DISABLE_TESTS=1
- env: TARGET=x86_64-unknown-freebsd DISABLE_TESTS=1
- env: TARGET=x86_64-unknown-netbsd DISABLE_TESTS=1

# Other architectures
- env: TARGET=aarch64-unknown-linux-gnu
- env: TARGET=armv7-unknown-linux-gnueabihf
- env: TARGET=mips-unknown-linux-gnu
# - env: TARGET=mips64-unknown-linux-gnuabi64
# - env: TARGET=mips64el-unknown-linux-gnuabi64
- env: TARGET=mipsel-unknown-linux-gnu
- env: TARGET=powerpc-unknown-linux-gnu
# - env: TARGET=powerpc64-unknown-linux-gnu
# - env: TARGET=powerpc64le-unknown-linux-gnu
# - env: TARGET=s390x-unknown-linux-gnu
- env: TARGET=arm-unknown-linux-gnueabi
# - env: TARGET=arm-unknown-linux-musleabi

# Testing other channels
- env: TARGET=x86_64-unknown-linux-gnu
rust: nightly
- env: TARGET=x86_64-apple-darwin
os: osx
rust: nightly

install:
- sh ci/install.sh
- source ~/.cargo/env || true

script:
- bash ci/run-travis.sh
- |
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
travis-cargo --only stable doc
fi

after_success:
- |
if [ "$TRAVIS_OS_NAME" = "linux" ] && \
[ "$TRAVIS_RUST_VERSION" = "stable" ] && \
[ "$ARCH" = "x86_64" ]; then
# Upload docs for stable (on master) to gh-pages
travis-cargo --only stable doc-upload
# Measure code coverage using kcov and upload to coveralls.io
travis-cargo coveralls --no-sudo --verify
fi
- bash ci/script.sh

before_deploy:
- sh ci/before_deploy.sh

deploy:
# TODO update `api_key.secure`
# - Create a `public_repo` GitHub token. Go to: https://github.com/settings/tokens/new
# - Encrypt it: `travis encrypt GH_TOKEN=0123456789012345678901234567890123456789`
# - Paste the output down here
api_key:
secure: S1ktt0eqmfrEHnYPf4WO7mZtatz/FWfYWBp8nwdc0nd8H6UNZ9Dwy3tJpVe0N9rpB9vAFnkdw6R4jdkIcgxfory2F3F8k/mh8cWn0mkvh2N34YjHMYLnuVzOoFrWai7IcPfROpdlY0tGBlwNj5KMkeBnHUJzd2q4j/4j/tlrfmg=
file_glob: true
file: $CRATE_NAME-$TRAVIS_TAG-$TARGET.*
on:
# Here you can pick which targets will generate binary releases
# In this example, there are some targets that are tested using the stable
# and nightly channels. This condition makes sure there is only one release
# for such targets and that's generated using the stable channel
#
# Here we make it so we never generate binary releases
condition: $DEPLOY = never
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
- /^v\d+\.\d+\.\d+.*$/
- master

notifications:
email:
on_success: never
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
([#508](https://github.com/nix-rust/nix/pull/508))
- Fixed the style of many bitflags and use `libc` in more places.
([#503](https://github.com/nix-rust/nix/pull/503))
- Added `ppoll` in `::nix::poll`
([#520](https://github.com/nix-rust/nix/pull/520))

### Changed
- `::nix::sys::termios::{cfgetispeed, cfsetispeed, cfgetospeed, cfsetospeed}`
Expand Down
48 changes: 0 additions & 48 deletions ci/README.md

This file was deleted.

23 changes: 23 additions & 0 deletions ci/before_deploy.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# 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"

# TODO Update this to package the right artifacts
Copy-Item "$SRC_DIR\target\$($Env:TARGET)\release\hello.exe" '.\'

7z a "$ZIP" *

Push-AppveyorArtifact "$ZIP"

Remove-Item *.* -Force
Set-Location ..
Remove-Item $STAGE
Set-Location $SRC_DIR
33 changes: 33 additions & 0 deletions ci/before_deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# 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

# TODO Update this to build the artifacts that matter to you
cross rustc --bin hello --target $TARGET --release -- -C lto

# TODO Update this to package the right artifacts
cp target/$TARGET/release/hello $stage/

cd $stage
tar czf $src/$CRATE_NAME-$TRAVIS_TAG-$TARGET.tar.gz *
cd $src

rm -rf $stage
}

main
18 changes: 0 additions & 18 deletions ci/cargo-config

This file was deleted.

24 changes: 24 additions & 0 deletions ci/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
set -ex

main() {
curl https://sh.rustup.rs -sSf | \
sh -s -- -y --default-toolchain $TRAVIS_RUST_VERSION

local target=
if [ $TRAVIS_OS_NAME = linux ]; then
target=x86_64-unknown-linux-gnu
else
target=x86_64-apple-darwin
fi

# TODO At some point you'll probably want to use a newer release of `cross`,
# simply change the argument to `--tag`.
curl -LSfs https://japaric.github.io/trust/install.sh | \
sh -s -- \
--force \
--git japaric/cross \
--tag v0.1.4 \
--target $target
}

main
29 changes: 0 additions & 29 deletions ci/run-all.sh

This file was deleted.

Loading