Files
iroh-gossip-rendezvous/.github/workflows/ci.yml
T
swaits 704bcd38e7 ci: bump actions/checkout v4→v6 and codecov-action v4→v6
actions/checkout v6 persists creds under $RUNNER_TEMP (needs runner
≥2.329.0 — GitHub-hosted has it). codecov-action v6 ships on node24.
2026-05-10 14:15:49 -06:00

124 lines
3.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: -D warnings
jobs:
# ── Fast lane: OS × toolchain matrix ──────────────────────────────
check:
name: check (${{ matrix.os }}, ${{ matrix.toolchain }})
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
toolchain: [stable, "1.93.0"] # MSRV
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with:
tool: cargo-nextest
- name: fmt
run: cargo fmt --check
- name: clippy
run: cargo clippy --all-targets --all-features -- -D warnings
- name: nextest
run: cargo nextest run --all-features --profile ci
- name: doctests
run: cargo test --doc --all-features
# ── Supply-chain hygiene ──────────────────────────────────────────
deny:
name: cargo deny
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: taiki-e/install-action@v2
with:
tool: cargo-deny
- run: cargo deny check
audit:
name: cargo audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: taiki-e/install-action@v2
with:
tool: cargo-audit
- run: cargo audit
# ── Public-API semver compliance (PR only) ────────────────────────
semver:
name: cargo semver-checks
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with:
tool: cargo-semver-checks
- name: semver-checks (non-blocking until 0.1 on crates.io)
run: cargo semver-checks check-release || echo "pre-publish; ignoring"
# ── Line + branch coverage (Linux stable only) ────────────────────
coverage:
name: coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
components: llvm-tools-preview
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with:
tool: cargo-llvm-cov,cargo-nextest
- name: lcov
run: cargo llvm-cov nextest --all-features --lcov --output-path lcov.info
- uses: codecov/codecov-action@v6
with:
files: lcov.info
fail_ci_if_error: false
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# ── Build examples (smoke) ────────────────────────────────────────
examples:
name: examples build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo build --example quickstart
- run: cargo build --example simulator --features sim
# ── Stateright BFS safety proof (fast) ────────────────────────────
stateright:
name: stateright BFS N=3 K=2
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo test --test stateright_model --release --all-features -- bfs_n3_k2 --ignored