name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-Dwarnings"
NATIVE_FEATURES: "std,serde,ffi,db,api"
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Create ALICE optional bridge stubs
uses: ./.github/actions/alice-stubs
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Test (default)
run: cargo test
- name: Test (full native feature set)
run: cargo test --features "$NATIVE_FEATURES"
- name: Test (release、full native feature set)
run: cargo test --release --features "$NATIVE_FEATURES"
clippy:
name: Clippy (all targets, pedantic, -D warnings)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Create ALICE optional bridge stubs
uses: ./.github/actions/alice-stubs
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- name: Clippy (default features)
run: cargo clippy --all-targets -- -W clippy::pedantic -D warnings
- name: Clippy (full native feature set)
run: cargo clippy --features "$NATIVE_FEATURES" --all-targets -- -W clippy::pedantic -D warnings
no_std:
name: no_std (host + bare-metal thumbv7em)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Create ALICE optional bridge stubs
uses: ./.github/actions/alice-stubs
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- name: Check (no_std, host, no alloc)
run: cargo check --lib --no-default-features
- name: Check (no_std + alloc, host)
run: cargo check --lib --no-default-features --features alloc
- name: Check (no_std + alloc + custom-rng, bare-metal thumbv7em-none-eabihf)
run: cargo check --lib --no-default-features --features alloc,custom-rng --target thumbv7em-none-eabihf
- name: Clippy (no_std + alloc + custom-rng, bare-metal)
run: cargo clippy --lib --no-default-features --features alloc,custom-rng --target thumbv7em-none-eabihf -- -D warnings
msrv:
name: MSRV (rust-version = 1.88 実 compile)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Create ALICE optional bridge stubs
uses: ./.github/actions/alice-stubs
- uses: dtolnay/rust-toolchain@1.88
- uses: Swatinem/rust-cache@v2
- name: Check (default + full native feature set)
run: |
cargo check --lib
cargo check --lib --features "$NATIVE_FEATURES"
feature-powerset:
name: Feature powerset (cargo-hack, std 固定, depth 2)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Create ALICE optional bridge stubs
uses: ./.github/actions/alice-stubs
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install cargo-hack
uses: taiki-e/install-action@cargo-hack
- name: Powerset (std + {alloc, serde, ffi, db, api, custom-rng} depth 2)
run: cargo hack check --lib --feature-powerset --depth 2 --exclude-features pyo3,crypto,nizk --features std
fmt:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Check formatting
run: cargo fmt -- --check
doc:
name: Doc
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Create ALICE optional bridge stubs
uses: ./.github/actions/alice-stubs
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Doc (full native feature set)
run: cargo doc --no-deps --features "$NATIVE_FEATURES"
env:
RUSTDOCFLAGS: "-Dwarnings"
actionlint:
name: actionlint (workflow YAML 検証)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Run actionlint
uses: reviewdog/action-actionlint@v1
with:
fail_level: error
reporter: github-check