La CI (Continuous Integration) de Vitte garantit la qualité, la stabilité et la portabilité du projet.
Chaque commit déclenche une série de jobs automatisés : compilation, tests, benchmarks, lint, sécurité et packaging.
flowchart TD
A[Commit / PR] --> B[Lint + Clippy + Fmt]
B --> C[Build Matrix]
C --> D[Unit Tests]
D --> E[Benchmarks]
E --> F[Security Checks]
F --> G[Artifacts / Release]
name: CI
on:
push:
branches: [ main ]
paths-ignore:
- "docs/**"
- "**/*.md"
- ".vscode/**"
pull_request:
workflow_dispatch:
concurrency:
group: ci-$
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: -Dwarnings
jobs:
lint:
name: fmt + clippy + deny (ubuntu)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- run: cargo fmt --all -- --check
- run: cargo clippy --all-targets --all-features -- -D warnings
build:
name: build + test (matrix)
runs-on: $
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --workspace --release
- run: cargo test --workspace
security:
name: audit + outdated
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cargo install cargo-audit --locked
- run: cargo audit
- run: cargo install cargo-outdated --locked
- run: cargo outdated || true
benchmarks:
name: run benchmarks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo bench --workspace
name: Release
on:
push:
tags:
- "v*.*.*"
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --release --workspace
- run: cargo test --release --workspace
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: vitte-binaries
path: target/release/*
La CI de Vitte est conçue pour être robuste, portable et évolutive.
Elle s’intègre directement avec GitHub Actions, et sera étendue à d’autres plateformes pour garantir la fiabilité du projet sur le long terme.