ci: make cargo-deny advisory checks non-blocking#2957
Conversation
Advisory checks run against a live RUSTSEC database. A new advisory instantly breaks CI on every branch even though no code changed -- this is what happened with RUSTSEC-2026-0104. Split cargo-deny into two CI jobs: - lint-rust-deny: bans, licenses, sources (blocking) - lint-rust-advisories: advisories only (informational, continue-on-error) Add a weekly cron workflow (rust-advisories.yaml) that checks for new advisories and opens an issue when one appears.
|
Split cargo-deny into blocking (bans/licenses/sources) and non-blocking (advisories) CI jobs to prevent RUSTSEC database changes from breaking CI on unrelated PRs. The weekly cron workflow will catch new advisories and open issues. One minor suggestion in Consider adding a more descriptive fallback message if the grep pattern doesn't match (e.g., if cargo-deny changes its output format): |
|
Posted a review comment. The changes look solid - splitting the checks and adding the cron workflow is the right approach for handling the external advisory database. One minor note: in the cron workflow, the grep extraction of the vulnerability snippet could benefit from a more robust fallback if cargo-deny's output format changes, but this is a low-risk edge case. |
Advisory checks run against a live RUSTSEC database that can change at any time. When a new advisory drops (like RUSTSEC-2026-0104 did), it instantly breaks CI on every branch -- main, merge queue, all open PRs -- even though no code changed.
Split
cargo deny checkinto two CI jobs:continue-on-error: trueso it shows up as a warning but doesn't gate mergesAdded a weekly cron workflow (
rust-advisories.yaml) that runs Monday 9am UTC and opens a "security"-labeled issue when new advisories appear, so they don't get lost.Also added
mise run lint:rust:deny:advisoriesfor running advisory checks locally.This PR should be merged before #2956 (the rustls-webpki bump) -- once advisories are non-blocking, the lockfile update is no longer urgent.