name: CI
on:
push:
branches: [ main ]
pull_request:
permissions:
contents: read
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
jobs:
lint:
name: fmt + clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Install toolchain
run: rustup toolchain install stable --profile minimal --component rustfmt,clippy && rustup default stable
- name: rustfmt
run: cargo fmt --check
- name: clippy
run: cargo clippy --all-targets -- -D warnings
test:
name: test (real io_uring on runner)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Install toolchain
run: rustup toolchain install stable --profile minimal && rustup default stable
- name: Build tests
run: cargo build --tests
- name: Test and assert io_uring actually ran
run: |
set -o pipefail
cargo test -- --nocapture --test-threads=1 2>&1 | tee test.out
if grep -q "SKIP " test.out; then
echo "::error::a test skipped — io_uring did not run on this runner (vacuous pass)"
exit 1
fi
docker-two-legs:
name: docker (degradation + real io_uring)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: run-docker.sh (leg 1 degrades, leg 2 real io_uring)
run: ./run-docker.sh