trigger:
batch: true
branches:
include:
- '*'
exclude:
- 'staging.tmp'
strategy:
matrix:
linux:
image_name: 'ubuntu-16.04'
rustup_toolchain: nightly
mac:
image_name: 'macos-10.13'
rustup_toolchain: nightly
windows:
image_name: 'vs2017-win2016'
rustup_toolchain: nightly
pool:
vmImage: $(image_name)
steps:
- bash: |
echo "Hello world from $AGENT_NAME running on $AGENT_OS"
echo "Reason: $BUILD_REASON"
case "$BUILD_REASON" in
"Manual") echo "$BUILD_REQUESTEDFOR manually queued the build." ;;
"PullRequest") echo "This is a CI build for a pull request on $BUILD_REQUESTEDFOR." ;;
"IndividualCI") echo "This is a CI build for $BUILD_REQUESTEDFOR." ;;
"BatchedCI") echo "This is a batched CI build for $BUILD_REQUESTEDFOR." ;;
*) "$BUILD_REASON" ;;
esac
displayName: 'Build Info'
continueOnError: true
- script: |
set -euxo pipefail
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $RUSTUP_TOOLCHAIN
echo "##vso[task.setvariable variable=PATH;]$PATH:$HOME/.cargo/bin"
condition: or(eq( variables['Agent.OS'], 'Linux' ), eq( variables['Agent.OS'], 'Darwin' ))
displayName: 'Install Rust (Linux/macOS)'
- script: curl -sSf -o rustup-init.exe https://win.rustup.rs && rustup-init.exe -y --default-toolchain %RUSTUP_TOOLCHAIN%
condition: eq( variables['Agent.OS'], 'Windows_NT' )
displayName: 'Install Rust (Windows)'
- script: |
echo ##vso[task.setvariable variable=PATH;]%PATH%;%USERPROFILE%\.cargo\bin
condition: eq( variables['Agent.OS'], 'Windows_NT' )
displayName: 'Add ~/.cargo/bin to PATH (Windows)'
- script: |
rustc -Vv
cargo -V
displayName: 'Print Rust Version'
continueOnError: true
- script: cargo build
displayName: 'cargo build'
- script: cargo test
displayName: 'cargo test'
- script: cargo build --features deny-warnings
displayName: 'Deny Warnings'
- script: rustup target add i686-unknown-linux-gnu && rustup target add thumbv7em-none-eabihf && rustup component add rust-src
displayName: 'Install Rustup Targets/Components'
- script: cargo build --target i686-unknown-linux-gnu && cargo build --target thumbv7em-none-eabihf
displayName: 'Build on non x86_64 platforms'
- script: cargo install cargo-xbuild bootimage --debug
displayName: 'Install cargo-xbuild and bootimage'
- script: sudo apt update && sudo apt install qemu-system-x86
condition: eq( variables['Agent.OS'], 'Linux' )
displayName: 'Install QEMU (Linux)'
- script: |
set -euxo pipefail
export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK=1
export HOMEBREW_NO_INSTALL_CLEANUP=1
brew install qemu
condition: eq( variables['Agent.OS'], 'Darwin' )
displayName: 'Install QEMU (macOS)'
- script: |
choco install qemu --limit-output --no-progress
echo ##vso[task.setvariable variable=PATH;]%PATH%;C:\Program Files\qemu
set PATH=%PATH%;C:\Program Files\qemu
qemu-system-x86_64 --version
condition: eq( variables['Agent.OS'], 'Windows_NT' )
failOnStderr: true
displayName: 'Install QEMU (Windows)'
- script: rustup component add llvm-tools-preview
displayName: "Add llvm-tools-preview Rustup Component"
- script: bootimage test --manifest-path testing/Cargo.toml
displayName: 'Integration Tests'
- script: rustup component add rustfmt
displayName: 'Install Rustfmt'
- script: cargo fmt -- --check
displayName: 'Check Formatting'