Skip to content

refactor: improve clarity regarding some NetBSD quirks #83

refactor: improve clarity regarding some NetBSD quirks

refactor: improve clarity regarding some NetBSD quirks #83

Workflow file for this run

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@v2
- 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-20.04
env: { SSHPASS: 12345 }
strategy:
matrix:
include:
- target: x86_64-unknown-freebsd
image: https://gitlab.com/kit-ty-kate/qemu-base-images/-/raw/master/FreeBSD-13.2-RELEASE-amd64.qcow2?inline=false
md5: 33b6bc89cdc675f5cbaf92e71ae648f8
args: -net nic
- target: x86_64-unknown-openbsd
image: https://gitlab.com/kit-ty-kate/qemu-base-images/-/raw/master/OpenBSD-7.4-amd64.qcow2?inline=false
md5: 1b7f3867c72f1dac3901b4a08257f580
args: -net nic
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install QEMU
run: sudo apt-get update && sudo apt-get install -y qemu-system-x86
- name: Lookup image
id: lookup-image
uses: actions/cache@v2
with:
path: ~/image.qcow2
key: ${{ matrix.target }}-image
- name: Download image
if: steps.lookup-image.outputs.cache-hit != 'true'
run: |
wget -O - --progress=dot:mega "${{ matrix.image }}" \
| tee ~/image.qcow2 \
| md5sum -c <(echo "${{ matrix.md5 }} -")
- name: Boot image
run: |
qemu-system-x86_64 -m 2048 -display none -snapshot -daemonize \
-drive if=ide,media=disk,file=$HOME/image.qcow2 \
-net user,hostfwd=tcp::1025-:22 \
${{ matrix.args }}
- name: Configure SSH
run: |
ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa
cat > ~/.ssh/config <<EOF
Host qemu
User root
HostName localhost
Port 1025
EOF
chmod og-rw ~
parallel -t --retries 20 --delay 5 ::: 'sshpass -e ssh-copy-id -o StrictHostKeyChecking=no qemu'
- name: Install toolchain (rustup)
if: ${{ contains(matrix.target, 'freebsd') }}
run: |
ssh qemu <<'EOF'
pkg install -y curl
curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal
ln -s ~/.cargo/bin ~/bin
EOF
- name: Install toolchain (pkg)
if: ${{ contains(matrix.target, 'openbsd') }}
run: ssh qemu "pkg_add rust"
- name: Copy crate
run: scp -r $PWD qemu:crate
# TODO: Respect RUST_TEST_THREADS
- name: Run tests
run: ssh qemu "cd crate && 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