Browse Source

Merge pull request #388 from alexcrichton/azure-pipelines

Set up CI with Azure Pipelines
urgh
Alex Crichton 6 years ago
committed by GitHub
parent
commit
0510c9e1fe
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 61
      .travis.yml
  2. 3
      README.md
  3. 55
      appveyor.yml
  4. 87
      azure-pipelines.yml
  5. 23
      ci/azure-install-rust.yml
  6. 17
      ci/azure-steps.yml

61
.travis.yml

@ -1,61 +0,0 @@
language: rust
sudo: false
matrix:
include:
- rust: 1.16.0
install:
script: cargo build
- rust: stable
env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1
- rust: stable
env: TARGET=i686-unknown-linux-gnu
- os: osx
env: TARGET=x86_64-apple-darwin NO_ADD=1
- os: osx
env: TARGET=aarch64-apple-ios NO_RUN=--no-run TARGET_SYSROOT=$(xcrun -sdk iphoneos --show-sdk-path)
- rust: beta
env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1
- rust: nightly
env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1
- name: "master doc to gh-pages"
install: true
rust: nightly
script:
- cargo doc --no-deps --all-features
deploy:
provider: script
script: curl -LsSf https://git.io/fhJ8n | rustc - && (cd target/doc && ../../rust_out)
skip_cleanup: true
on:
branch: master
install:
- if [ -z "$NO_ADD" ]; then rustup target add $TARGET; fi
script:
- cargo build --verbose
# FIXME: no idea why `--test-threads=1` is required on the OSX builder, it
# just randomly broke one day when the travis image was upgraded, and
# debugging turned up no easily found source of bugs...
#
# good build - https://travis-ci.org/alexcrichton/cc-rs/builds/409602374
# bad build - https://travis-ci.org/alexcrichton/cc-rs/builds/410489079
#
# Those are using the same compiler, same commit, same... everything. Except
# the OSX image! No idea what changed...
- cargo test --verbose $NO_RUN -- --test-threads=1
- cargo test --verbose --features parallel $NO_RUN -- --test-threads=1
- cargo test --manifest-path cc-test/Cargo.toml --target $TARGET $NO_RUN
- cargo test --manifest-path cc-test/Cargo.toml --target $TARGET --features parallel $NO_RUN
- cargo test --manifest-path cc-test/Cargo.toml --target $TARGET --release $NO_RUN
- cargo clean && cargo build
notifications:
email:
on_success: never
addons:
apt:
packages:
- g++-multilib

3
README.md

@ -2,8 +2,7 @@
A library to compile C/C++/assembly into a Rust library/application. A library to compile C/C++/assembly into a Rust library/application.
[![Build Status](https://travis-ci.com/alexcrichton/cc-rs.svg?branch=master)](https://travis-ci.com/alexcrichton/cc-rs) [![Build Status](https://dev.azure.com/alexcrichton/cc-rs/_apis/build/status/alexcrichton.cc-rs?branchName=master)](https://dev.azure.com/alexcrichton/cc-rs/_build/latest?definitionId=5&branchName=master)
[![Build status](https://ci.appveyor.com/api/projects/status/onu270iw98h81nwv?svg=true)](https://ci.appveyor.com/project/alexcrichton/cc-rs)
[Documentation](https://docs.rs/cc) [Documentation](https://docs.rs/cc)

55
appveyor.yml

@ -1,55 +0,0 @@
environment:
# At the time this was added AppVeyor was having troubles with checking
# revocation of SSL certificates of sites like static.rust-lang.org and what
# we think is crates.io. The libcurl HTTP client by default checks for
# revocation on Windows and according to a mailing list [1] this can be
# disabled.
#
# The `CARGO_HTTP_CHECK_REVOKE` env var here tells cargo to disable SSL
# revocation checking on Windows in libcurl. Note, though, that rustup, which
# we're using to download Rust here, also uses libcurl as the default backend.
# Unlike Cargo, however, rustup doesn't have a mechanism to disable revocation
# checking. To get rustup working we set `RUSTUP_USE_HYPER` which forces it to
# use the Hyper instead of libcurl backend. Both Hyper and libcurl use
# schannel on Windows but it appears that Hyper configures it slightly
# differently such that revocation checking isn't turned on by default.
#
# [1]: https://curl.haxx.se/mail/lib-2016-03/0202.html
RUSTUP_USE_HYPER: 1
CARGO_HTTP_CHECK_REVOKE: false
matrix:
- TARGET: x86_64-pc-windows-msvc
ARCH: amd64
VS: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat
- TARGET: x86_64-pc-windows-msvc
ARCH: amd64
VS: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
- TARGET: i686-pc-windows-msvc
ARCH: x86
VS: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat
- TARGET: i686-pc-windows-msvc
ARCH: x86
VS: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
- TARGET: x86_64-pc-windows-gnu
MSYS_BITS: 64
- TARGET: i686-pc-windows-gnu
MSYS_BITS: 32
install:
- ps: Start-FileDownload "https://static.rust-lang.org/dist/rust-nightly-${env:TARGET}.exe"
- rust-nightly-%TARGET%.exe /VERYSILENT /NORESTART /DIR="C:\Program Files (x86)\Rust"
- if defined VS call "%VS%" %ARCH%
- set PATH=%PATH%;C:\Program Files (x86)\Rust\bin
- if defined MSYS_BITS set PATH=%PATH%;C:\msys64\mingw%MSYS_BITS%\bin
- rustc -V
- cargo -V
build: false
test_script:
- cargo test --target %TARGET%
- cargo test --features parallel --target %TARGET%
- cargo test --manifest-path cc-test/Cargo.toml --target %TARGET%
- cargo test --manifest-path cc-test/Cargo.toml --features parallel --target %TARGET%
- cargo test --manifest-path cc-test/Cargo.toml --release --target %TARGET%

87
azure-pipelines.yml

@ -0,0 +1,87 @@
trigger:
- master
jobs:
- job: min
displayName: Minimum Rust
steps:
- template: ci/azure-install-rust.yml
parameters:
toolchain: 1.16.0
- script: cargo build
- job: Linux
pool:
vmImage: ubuntu-16.04
strategy:
matrix:
x86_64:
TARGET: x86_64-unknown-linux-gnu
i686:
TARGET: i686-unknown-linux-gnu
x86_64-beta:
TARGET: x86_64-unknown-linux-gnu
TOOLCHAIN: beta
x86_64-nightly:
TARGET: x86_64-unknown-linux-gnu
TOOLCHAIN: nightly
- job: macOS
pool:
vmImage: macos-10.13
steps:
- template: ci/azure-steps.yml
strategy:
matrix:
x86_64:
TARGET: x86_64-apple-darwin
aarch64-ios:
TARGET: aarch64-apple-ios
NO_RUN: --no-run
- job: Windows_vs2019
pool:
vmImage: windows-2019
steps:
- template: ci/azure-steps.yml
strategy:
matrix:
x86_64-msvc:
TARGET: x86_64-pc-windows-msvc
- job: Windows_vs2017
pool:
vmImage: vs2017-win2016
steps:
- template: ci/azure-steps.yml
strategy:
matrix:
x86_64-msvc:
TARGET: x86_64-pc-windows-msvc
i686-msvc:
TARGET: i686-pc-windows-msvc
x86_64-gnu:
TARGET: x86_64-pc-windows-gnu
i686-gnu:
TARGET: i686-pc-windows-gnu
- job: Windows_vs2015
pool:
vmImage: vs2015-win2012r2
steps:
- template: ci/azure-steps.yml
strategy:
matrix:
x86_64-msvc:
TARGET: x86_64-pc-windows-msvc
i686-msvc:
TARGET: i686-pc-windows-msvc
- job: docs
steps:
- template: ci/azure-install-rust.yml
- script: cargo doc --no-deps --all-features
- script: curl -LsSf https://git.io/fhJ8n | rustc - && (cd target/doc && ../../rust_out)
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
env:
GITHUB_DEPLOY_KEY: $(GITHUB_DEPLOY_KEY)

23
ci/azure-install-rust.yml

@ -0,0 +1,23 @@
steps:
- bash: |
set -e
toolchain=$TOOLCHAIN
if [ "$toolchain" = "" ]; then
toolchain=stable
fi
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $toolchain
echo "##vso[task.prependpath]$HOME/.cargo/bin"
displayName: Install rust (unix)
condition: ne( variables['Agent.OS'], 'Windows_NT' )
- script: |
curl -sSf -o rustup-init.exe https://win.rustup.rs
rustup-init.exe -y --default-toolchain stable-%TARGET%
echo ##vso[task.prependpath]%USERPROFILE%\.cargo\bin
displayName: Install rust (windows)
condition: eq( variables['Agent.OS'], 'Windows_NT' )
- script: |
rustc -Vv
cargo -V
displayName: Query rust and cargo versions

17
ci/azure-steps.yml

@ -0,0 +1,17 @@
steps:
- template: azure-install-rust.yml
- bash: rustup target add $TARGET
displayName: Install Rust target
- script: cargo build
displayName: "Normal build"
- bash: cargo test $NO_RUN -- --test-threads 1
displayName: "Crate tests"
- bash: cargo test $NO_RUN --features parallel -- --test-threads 1
displayName: "Crate tests (parallel)"
- bash: cargo test $NO_RUN --manifest-path cc-test/Cargo.toml --target $TARGET
displayName: "cc-test tests"
- bash: cargo test $NO_RUN --manifest-path cc-test/Cargo.toml --target $TARGET --features parallel
displayName: "cc-test tests (parallel)"
- bash: cargo test $NO_RUN --manifest-path cc-test/Cargo.toml --target $TARGET --release
displayName: "cc-test tests (release)"
Loading…
Cancel
Save