1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
|
name: CI
on: [push, pull_request]
env:
CARGO_TERM_COLOR: always
RUST_TEST_THREADS: 1
jobs:
test:
name: Test (${{ matrix.target }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
# Linux
- target: i686-unknown-linux-gnu
os: ubuntu-20.04
- target: i686-unknown-linux-musl
os: ubuntu-20.04
- target: x86_64-unknown-linux-gnu
os: ubuntu-20.04
- target: x86_64-unknown-linux-musl
os: ubuntu-20.04
# Cross
- target: armv7-unknown-linux-gnueabihf
os: ubuntu-20.04
use-cross: true
- target: aarch64-linux-android
toolchain: '1.52.0' # See: https://github.com/rust-lang/rust/issues/110786
os: ubuntu-20.04
use-cross: true
- target: mips-unknown-linux-gnu
toolchain: '1.52.0' # See: https://github.com/rust-lang/compiler-team/issues/648
os: ubuntu-20.04
use-cross: true
# Windows
- target: i686-pc-windows-gnu
os: windows-2019
- target: i686-pc-windows-msvc
os: windows-2019
- target: x86_64-pc-windows-gnu
os: windows-2019
- target: x86_64-pc-windows-msvc
os: windows-2019
# macOS
- target: x86_64-apple-darwin
os: macos-13
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain || 'stable' }}
profile: minimal
target: ${{ matrix.target }}
override: true
- name: Run tests (cross)
if: ${{ matrix.use-cross }}
uses: actions-rs/cargo@v1
with:
use-cross: true
command: test
args: --target ${{ matrix.target }}
- name: Run tests (cargo)
if: ${{ !matrix.use-cross }}
run: cargo test
test-qemu:
name: Test (${{ matrix.target }})
runs-on: ubuntu-latest
strategy:
matrix:
include:
- target: x86_64-unknown-freebsd
os: freebsd
os-version: '14.0'
- target: x86_64-unknown-openbsd
os: openbsd
os-version: '7.4'
install: sudo pkg_add rust
- target: x86_64-unknown-netbsd
os: netbsd
os-version: '9.3'
prepare:
sudo pkgin -y install mozilla-rootcerts-openssl
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run tests (cargo)
uses: cross-platform-actions/action@v0.23.0
with:
operating_system: ${{ matrix.os }}
architecture: ${{ matrix.architecture || 'x86-64' }}
version: ${{ matrix.os-version }}
run: |
${{ matrix.prepare }}
${{ matrix.install || format('
curl https://sh.rustup.rs -sSf | sh -s -- -q -y --profile minimal --target {0}
export PATH="$HOME/.cargo/bin:$PATH"
', matrix.target)}}
cargo test
check:
name: Check (${{ matrix.target }})
runs-on: ubuntu-20.04
strategy:
matrix:
target:
- x86_64-unknown-illumos
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
target: ${{ matrix.target }}
override: true
- name: Run check
run: cargo check --target ${{ matrix.target }}
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
- name: Run rustfmt
run: cargo fmt -- --check
- name: Run clippy
run: cargo clippy --all-targets
|