Commit 0149f354 authored by Andy Barron's avatar Andy Barron
Browse files

Initial CI config

parent 9693d992
# Appveyor configuration template for Rust
# https://github.com/starkat99/appveyor-rust
## Operating System (VM environment) ##
# Rust needs at least Visual Studio 2013 Appveyor OS for MSVC targets.
os: Visual Studio 2015
## Build Matrix ##
# This configuration will setup a build for each channel & target combination (12 windows
# combinations in all).
#
# There are 3 channels: stable, beta, and nightly.
#
# Alternatively, the full version may be specified for the channel to build using that specific
# version (e.g. channel: 1.5.0)
#
# The values for target are the set of windows Rust build targets. Each value is of the form
#
# ARCH-pc-windows-TOOLCHAIN
#
# Where ARCH is the target architecture, either x86_64 or i686, and TOOLCHAIN is the linker
# toolchain to use, either msvc or gnu. See https://www.rust-lang.org/downloads.html#win-foot for
# a description of the toolchain differences.
#
# Comment out channel/target combos you do not wish to build in CI.
environment:
matrix:
### MSVC Toolchains ###
# Stable 64-bit MSVC
- channel: stable
target: x86_64-pc-windows-msvc
# Stable 32-bit MSVC
- channel: stable
target: i686-pc-windows-msvc
# Beta 64-bit MSVC
- channel: beta
target: x86_64-pc-windows-msvc
# Beta 32-bit MSVC
- channel: beta
target: i686-pc-windows-msvc
# Nightly 64-bit MSVC
- channel: nightly
target: x86_64-pc-windows-msvc
# Nightly 32-bit MSVC
- channel: nightly
target: i686-pc-windows-msvc
### GNU Toolchains ###
# Stable 64-bit GNU
- channel: stable
target: x86_64-pc-windows-gnu
# Stable 32-bit GNU
- channel: stable
target: i686-pc-windows-gnu
# Beta 64-bit GNU
- channel: beta
target: x86_64-pc-windows-gnu
# Beta 32-bit GNU
- channel: beta
target: i686-pc-windows-gnu
# Nightly 64-bit GNU
- channel: nightly
target: x86_64-pc-windows-gnu
# Nightly 32-bit GNU
- channel: nightly
target: i686-pc-windows-gnu
### Allowed failures ###
# See Appveyor documentation for specific details. In short, place any channel or targets you wish
# to allow build failures on (usually nightly at least is a wise choice). This will prevent a build
# or test failure in the matching channels/targets from failing the entire build.
matrix:
allow_failures:
- channel: nightly
# If you only care about stable channel build failures, uncomment the following line:
#- channel: beta
# 32-bit MSVC isn't stablized yet, so you may optionally allow failures there (uncomment line):
#- target: i686-pc-windows-msvc
## Install Script ##
# This is the most important part of the Appveyor configuration. This installs the version of Rust
# specified by the 'channel' and 'target' environment variables from the build matrix. By default,
# Rust will be installed to C:\Rust for easy usage, but this path can be overridden by setting the
# RUST_INSTALL_DIR environment variable. The URL to download rust distributions defaults to
# https://static.rust-lang.org/dist/ but can overridden by setting the RUST_DOWNLOAD_URL environment
# variable.
#
# For simple configurations, instead of using the build matrix, you can override the channel and
# target environment variables with the -channel and -target script arguments.
#
# If no channel or target arguments or environment variables are specified, will default to stable
# channel and x86_64-pc-windows-msvc target.
#
# The file appveyor_rust_install.ps1 must exist in the root directory of the repository.
install:
- ps: .\appveyor_rust_install.ps1
# Alternative install command for simple configurations without build matrix (uncomment line and
# comment above line):
#- ps: .\appveyor_rust_install.ps1 -channel stable -target x86_64-pc-windows-msvc
## Build Script ##
# Uses 'cargo test' to run tests. Alternatively, the project may call compiled programs directly or
# perform other testing commands. Rust will automatically be placed in the PATH environment
# variable.
test_script:
- cmd: cargo test --verbose
\ No newline at end of file
##### Appveyor Rust Install Script #####
# https://github.com/starkat99/appveyor-rust
# This is the most important part of the Appveyor configuration. This installs the version of Rust
# specified by the "channel" and "target" environment variables from the build matrix. By default,
# Rust will be installed to C:\Rust for easy usage, but this path can be overridden by setting the
# RUST_INSTALL_DIR environment variable. The URL to download rust distributions defaults to
# https://static.rust-lang.org/dist/ but can overridden by setting the RUST_DOWNLOAD_URL environment
# variable.
#
# For simple configurations, instead of using the build matrix, you can override the channel and
# target environment variables with the --channel and --target script arguments.
#
# If no channel or target arguments or environment variables are specified, will default to stable
# channel and x86_64-pc-windows-msvc target.
param([string]$channel=${env:channel}, [string]$target=${env:target})
# Initialize our parameters from arguments and environment variables, falling back to defaults
if (!$channel) {
$channel = "stable"
}
if (!$target) {
$target = "x86_64-pc-windows-msvc"
}
$downloadUrl = "https://static.rust-lang.org/dist/"
if ($env:RUST_DOWNLOAD_URL) {
$downloadUrl = $env:RUST_DOWNLOAD_URL
}
$installDir = "C:\Rust"
if ($env:RUST_INSTALL_DIR) {
$installUrl = $env:RUST_INSTALL_DIR
}
if ($channel -eq "stable") {
# Download manifest so we can find actual filename of installer to download. Needed for stable.
echo "Downloading $channel channel manifest"
$manifest = "${env:Temp}\channel-rust-${channel}"
Start-FileDownload "${downloadUrl}channel-rust-${channel}" -FileName "$manifest"
# Search the manifest lines for the correct filename based on target
$match = Get-Content "$manifest" | Select-String -pattern "${target}.exe" -simplematch
if (!$match -or !$match.line) {
throw "Could not find $target in $channel channel manifest"
}
$installer = $match.line
} else {
# Otherwise download the file specified by channel directly.
$installer = "rust-${channel}-${target}.exe"
}
# Download installer
echo "Downloading ${downloadUrl}$installer"
Start-FileDownload "${downloadUrl}$installer" -FileName "${env:Temp}\$installer"
# Execute installer and wait for it to finish
echo "Installing $installer to $installDir"
&"${env:Temp}\$installer" /VERYSILENT /NORESTART /DIR="$installDir" | Write-Output
# Add Rust to the path.
$env:Path += ";${installDir}\bin;C:\MinGW\bin"
echo "Installation of $channel Rust $target completed"
# Test and display installed version information for rustc and cargo
rustc -V
cargo -V
\ No newline at end of file
language: rust
rust:
- stable
- beta
- nightly
matrix:
allow_failures:
- rust: nightly
os:
- linux
- osx
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment