name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- run: cargo check --workspace --all-targets
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@v2
with:
tool: nextest
- run: cargo nextest run --profile ci --workspace
- run: cargo test --workspace --doc
test-no-default-features:
name: Test (no default features)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@v2
with:
tool: nextest
- run: cargo nextest run --profile ci -p keleusma --no-default-features
- run: cargo test -p keleusma --no-default-features --doc
test-signatures:
name: Test (signatures feature)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@v2
with:
tool: nextest
- run: cargo nextest run --profile ci -p keleusma --features signatures
- run: cargo test -p keleusma --features signatures --doc
test-broad-features:
name: Test (broad features)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@v2
with:
tool: nextest
- run: cargo nextest run --profile ci -p keleusma --features signatures,shell
- run: cargo test -p keleusma --features signatures,shell --doc
test-bench:
name: Test (keleusma-bench)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@v2
with:
tool: nextest
- name: Default features
run: |
cargo nextest run --profile ci -p keleusma-bench
cargo test -p keleusma-bench --doc
- name: No default features
run: cargo build -p keleusma-bench --no-default-features
examples-sdl3:
name: Examples (SDL3 feature)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- name: Install SDL3 build dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
cmake ninja-build pkg-config \
libasound2-dev libpulse-dev libjack-dev libsndio-dev \
libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev \
libxi-dev libxss-dev libxtst-dev libxkbcommon-dev \
libdrm-dev libgbm-dev libgl1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev \
libdbus-1-dev libudev-dev \
libwayland-dev libpipewire-0.3-dev libdecor-0-dev
- name: Build SDL3-gated examples
run: cargo build --workspace --examples --features sdl3-example
doc:
name: Doc
runs-on: ubuntu-latest
env:
RUSTDOCFLAGS: -D warnings -A rustdoc::redundant-explicit-links
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- name: keleusma (docs.rs feature set)
run: cargo doc -p keleusma --no-deps --features signatures,encryption,shell
- name: keleusma-arena (all features)
run: cargo doc -p keleusma-arena --no-deps --all-features
- name: keleusma-macros
run: cargo doc -p keleusma-macros --no-deps
- name: keleusma-bench
run: cargo doc -p keleusma-bench --no-deps
- name: keleusma-cli
run: cargo doc -p keleusma-cli --no-deps
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- run: cargo clippy --workspace --all-targets -- -D warnings
fmt:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo fmt --check
msrv-arena:
name: MSRV keleusma-arena (1.85)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@1.85
- run: cargo check -p keleusma-arena
- run: cargo check -p keleusma-arena --no-default-features
msrv-keleusma:
name: MSRV keleusma (1.88)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@1.88
- run: cargo check -p keleusma
- run: cargo check -p keleusma --no-default-features
- run: cargo check -p keleusma --features signatures
- run: cargo check -p keleusma --tests
no-std:
name: no_std build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
with:
targets: thumbv7em-none-eabihf
- name: Build keleusma against thumbv7em-none-eabihf
run: cargo build -p keleusma --target thumbv7em-none-eabihf
rtos-n6-build:
name: RTOS demonstrator build (N6 / thumbv8m.main-none-eabihf)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
with:
targets: thumbv8m.main-none-eabihf
- name: three-task-n6
run: |
cd examples/rtos
cargo build --release --bin three-task-n6 \
--target thumbv8m.main-none-eabihf \
--no-default-features \
--features stm32n6570dk-platform
- name: three-task-n6 with verify (boot-time WCET report)
run: |
cd examples/rtos
cargo build --release --bin three-task-n6 \
--target thumbv8m.main-none-eabihf \
--no-default-features \
--features stm32n6570dk-platform,keleusma-verify
- name: bench-n6
run: |
cd examples/rtos
cargo build --release --bin bench_n6 \
--target thumbv8m.main-none-eabihf \
--no-default-features \
--features stm32n6570dk-platform
miri:
name: Miri
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@nightly
with:
components: miri
- name: Stacked borrows
run: cargo miri test -p keleusma-arena
- name: Tree borrows
env:
MIRIFLAGS: -Zmiri-tree-borrows
run: cargo miri test -p keleusma-arena
docs-links:
name: Doc links
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- name: Check relative Markdown links
run: cargo run -q -p keleusma-cli -- run scripts/check-md-links.kel