ci: adopt the fleet reusable workflow - #5
Merged
Merged
Conversation
Replaces the hand-maintained ci.yml with a call to SecurityRonin/fleet-ci@619094a What the old file enforced (read from origin/main, not the TSV): fmt; clippy --all-targets twice (default features and --no-default-features); `cargo test` twice, same two feature sets, ubuntu only; cargo-deny; MSRV 1.85 running `cargo test`; a 100%-line coverage gate; a second, independent 100%-e2e gate over the integration suite; a fuzz build check; gitleaks; a soft cargo-geiger; cargo-vet. Inputs, each carrying an existing decision across: os-matrix: false the old test job ran on ubuntu-latest only msrv-check: test the old MSRV job ran the suite at 1.85, not just a build deny-config-repo: "" keep the repo's own deny.toml; the shared fleet config is LOOSER (multiple-versions "warn" vs "deny", and 21 RUSTSEC ignores vs none) deny-args: --all-features cargo-deny-action defaults its `arguments` input to --all-features, so the old job checked the full-feature graph `all-features` and `coverage-scope` stay at their defaults. This is a one-package workspace whose only feature is `alloc`, and `alloc` is in `default`, so `--workspace --all-features` compiles and measures exactly the lines the old bare `cargo llvm-cov` did. Carried across as jobs, because no input can express them: - no-default-features: the lean `no_std` leg of the old clippy and test jobs. The shared workflow builds one feature set, so that leg lives here. - coverage-e2e: the old coverage job's second gate — the integration suite (--test roundtrip --test errors) must ALONE reach 100%. Copied verbatim; only the job scaffolding is new, and it is the same scaffolding the old coverage job used. - geiger: soft, unchanged. Relaxation, stated rather than hidden: the fleet `strict` gate additionally exempts delimiter-only lines and annotated `// cov:unreachable` lines, which the old hand-rolled gate did not — it failed on any zero-hit record at all. The repo is at 100% today with no markers at all, so both gates are green; the new one is marginally more permissive at the margin. Added by adoption, with no old equivalent (verified green on this branch): - path-deps: no path dependency may escape the repository - docs: `cargo doc --no-deps --workspace --all-features` with RUSTDOCFLAGS=-D warnings (ran it on this branch: exit 0) - fmt is now `cargo fmt --all --check`, clippy now `--workspace` - gitleaks runs both `git` and `dir` mode with the repo's .gitleaks.toml - cargo-vet now runs `cargo fetch --locked`; the old bare `cargo fetch` re-resolved Cargo.lock in the runner, so `vet --locked` validated a lock CI had just generated for itself main has no branch protection, so no required-check name changes with this.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ci: adopt the fleet reusable workflow
Replaces the hand-maintained ci.yml with a call to
SecurityRonin/fleet-ci@619094a
What the old file enforced (read from origin/main, not the TSV):
fmt; clippy --all-targets twice (default features and --no-default-features);
cargo testtwice, same two feature sets, ubuntu only; cargo-deny; MSRV 1.85running
cargo test; a 100%-line coverage gate; a second, independent100%-e2e gate over the integration suite; a fuzz build check; gitleaks; a soft
cargo-geiger; cargo-vet.
Inputs, each carrying an existing decision across:
os-matrix: false the old test job ran on ubuntu-latest only
msrv-check: test the old MSRV job ran the suite at 1.85, not just a build
deny-config-repo: "" keep the repo's own deny.toml; the shared fleet config
is LOOSER (multiple-versions "warn" vs "deny", and 21
RUSTSEC ignores vs none)
deny-args: --all-features
cargo-deny-action defaults its
argumentsinput to--all-features, so the old job checked the full-feature
graph
all-featuresandcoverage-scopestay at their defaults. This is aone-package workspace whose only feature is
alloc, andallocis indefault, so--workspace --all-featurescompiles and measures exactly thelines the old bare
cargo llvm-covdid.Carried across as jobs, because no input can express them:
no_stdleg of the old clippy and test jobs.The shared workflow builds one feature set, so that leg lives here.
(--test roundtrip --test errors) must ALONE reach 100%. Copied verbatim;
only the job scaffolding is new, and it is the same scaffolding the old
coverage job used.
Relaxation, stated rather than hidden: the fleet
strictgate additionallyexempts delimiter-only lines and annotated
// cov:unreachablelines, which theold hand-rolled gate did not — it failed on any zero-hit record at all. The
repo is at 100% today with no markers at all, so both gates are green; the new
one is marginally more permissive at the margin.
Added by adoption, with no old equivalent (verified green on this branch):
cargo doc --no-deps --workspace --all-featureswithRUSTDOCFLAGS=-D warnings (ran it on this branch: exit 0)
cargo fmt --all --check, clippy now--workspacegitanddirmode with the repo's .gitleaks.tomlcargo fetch --locked; the old barecargo fetchre-resolved Cargo.lock in the runner, so
vet --lockedvalidated a lock CIhad just generated for itself
main has no branch protection, so no required-check name changes with this.