Add github actions files for CI
This commit is contained in:
parent
ca53ee34a8
commit
49d4369838
|
@ -0,0 +1,100 @@
|
|||
on: [push, pull_request]
|
||||
|
||||
name: Continuous integration
|
||||
|
||||
jobs:
|
||||
Stable:
|
||||
name: Test - stable toolchain
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: Checkout Crate
|
||||
uses: actions/checkout@v3
|
||||
- name: Checkout Toolchain
|
||||
# https://github.com/dtolnay/rust-toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
- name: Running test script
|
||||
env:
|
||||
DO_NO_STD: true
|
||||
DO_FEATURE_MATRIX: true
|
||||
run: ./contrib/test.sh
|
||||
|
||||
Beta:
|
||||
name: Test - beta toolchain
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: Checkout Crate
|
||||
uses: actions/checkout@v3
|
||||
- name: Checkout Toolchain
|
||||
uses: dtolnay/rust-toolchain@beta
|
||||
- name: Running test script
|
||||
env:
|
||||
DO_NO_STD: true
|
||||
run: ./contrib/test.sh
|
||||
|
||||
Nightly:
|
||||
name: Test - nightly toolchain
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: Checkout Crate
|
||||
uses: actions/checkout@v3
|
||||
- name: Checkout Toolchain
|
||||
uses: dtolnay/rust-toolchain@nightly
|
||||
- name: Running test script
|
||||
env:
|
||||
DO_NO_STD: true
|
||||
run: ./contrib/test.sh
|
||||
|
||||
MSRV:
|
||||
name: Test - 1.41.1 toolchain
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: Checkout Crate
|
||||
uses: actions/checkout@v3
|
||||
- name: Checkout Toolchain
|
||||
uses: dtolnay/rust-toolchain@1.41.1
|
||||
- name: Running test script
|
||||
env:
|
||||
DO_NO_STD: true
|
||||
DO_FEATURE_MATRIX: true
|
||||
run: ./contrib/test.sh
|
||||
|
||||
Arch32bit:
|
||||
name: Test 32-bit version
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Crate
|
||||
uses: actions/checkout@v3
|
||||
- name: Checkout Toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
- name: Add architecture i386
|
||||
run: sudo dpkg --add-architecture i386
|
||||
- name: Install i686 gcc
|
||||
run: sudo apt-get update -y && sudo apt-get install -y gcc-multilib
|
||||
- name: Install target
|
||||
run: rustup target add i686-unknown-linux-gnu
|
||||
- name: Run test on i686
|
||||
run: cargo test --target i686-unknown-linux-gnu
|
||||
|
||||
Cross:
|
||||
name: Cross test
|
||||
if: ${{ !github.event.act }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Crate
|
||||
uses: actions/checkout@v3
|
||||
- name: Checkout Toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
- name: Install target
|
||||
run: rustup target add s390x-unknown-linux-gnu
|
||||
- name: install cross
|
||||
run: cargo install cross --locked
|
||||
- name: run cross test
|
||||
run: cross test --target s390x-unknown-linux-gnu
|
|
@ -0,0 +1,54 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -ex
|
||||
|
||||
FEATURES="serde rand all-languages"
|
||||
|
||||
cargo --version
|
||||
rustc --version
|
||||
|
||||
# Work out if we are using a nightly toolchain.
|
||||
NIGHTLY=false
|
||||
if cargo --version | grep nightly; then
|
||||
NIGHTLY=true
|
||||
fi
|
||||
|
||||
# Pin dependencies as required if we are using MSRV toolchain.
|
||||
# if cargo --version | grep "1\.41"; then
|
||||
# fi
|
||||
|
||||
echo "********* Testing std *************"
|
||||
# Test without any features other than std first
|
||||
cargo test --verbose --no-default-features --features="std"
|
||||
|
||||
echo "********* Testing default *************"
|
||||
# Then test with the default features
|
||||
cargo test --verbose
|
||||
|
||||
if [ "$DO_NO_STD" = true ]
|
||||
then
|
||||
echo "********* Testing no-std build *************"
|
||||
# Build no_std, to make sure that cfg(test) doesn't hide any issues
|
||||
cargo build --verbose --no-default-features
|
||||
|
||||
# Build std + no_std, to make sure they are not incompatible
|
||||
cargo build --verbose
|
||||
# Test no_std
|
||||
cargo test --verbose --no-default-features
|
||||
|
||||
# Build all features
|
||||
cargo build --verbose --features="$FEATURES" --no-default-features
|
||||
|
||||
# Build specific features
|
||||
for feature in ${FEATURES}
|
||||
do
|
||||
cargo build --verbose --features="$feature" --no-default-features
|
||||
done
|
||||
fi
|
||||
|
||||
# Test each feature
|
||||
for feature in ${FEATURES}
|
||||
do
|
||||
echo "********* Testing $feature *************"
|
||||
cargo test --verbose --features="$feature"
|
||||
done
|
Loading…
Reference in New Issue