-
Notifications
You must be signed in to change notification settings - Fork 654
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Auto merge of #536 - nix-rust:new-ci/master, r=kamalmarhubi
Merge New CI Infrastructure Based on Trust/Cross Into Master See discussion on #528. This PR is to track the final decision of whether we are ready to merge the new CI infrastructure (and related bug fixes) back into master. Initially, we know that the branch is not ready to merge (as there are still failing tests). This PR acts as a single point of reference to get the current status of how close we are to merging things back into master. A number of issues with "TRUST CI" in the title have been created for the work that appears to be required to get us to the point where this branch can be merged.
- Loading branch information
Showing
20 changed files
with
637 additions
and
720 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,102 +1,131 @@ | ||
# | ||
# 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: 1.13.0 | ||
|
||
env: | ||
global: | ||
- PATH=$HOME/.local/bin:$PATH | ||
- TRAVIS_CARGO_NIGHTLY_FEATURE="" | ||
matrix: | ||
- ARCH=x86_64 | ||
- ARCH=i686 | ||
- CRATE_NAME=nix | ||
- CARGO_TEST_THREADS=1 | ||
|
||
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 | ||
# 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 beta on main targets | ||
- env: TARGET=x86_64-unknown-linux-gnu | ||
rust: beta | ||
- env: TARGET=x86_64-apple-darwin | ||
os: osx | ||
rust: beta | ||
|
||
# | ||
# Build/Test/Deploy Steps | ||
# | ||
before_script: | ||
- pip install 'travis-cargo<0.2' --user | ||
# Testing nightly on main targets (allowed to fail) | ||
- env: TARGET=x86_64-unknown-linux-gnu | ||
rust: nightly | ||
- env: TARGET=x86_64-apple-darwin | ||
os: osx | ||
rust: nightly | ||
|
||
# Testing nightlies on main targets. These might fail because of issues | ||
# with the compiler, so we allow failures here. | ||
allow_failures: | ||
# Failures for nightlies may be because of compiler bugs, so don't fail the | ||
# build if these fail. | ||
- env: TARGET=x86_64-unknown-linux-gnu | ||
rust: nightly | ||
- env: TARGET=x86_64-apple-darwin | ||
os: osx | ||
rust: nightly | ||
# FIXME: targets that should pass but are currently failing | ||
- env: TARGET=i686-unknown-linux-musl | ||
- env: TARGET=x86_64-unknown-linux-musl | ||
- env: TARGET=mips-unknown-linux-gnu | ||
- env: TARGET=mipsel-unknown-linux-gnu | ||
- env: TARGET=powerpc-unknown-linux-gnu | ||
|
||
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Oops, something went wrong.