ci(workflows): add monthly cargo outdated dependency scan#8176
Open
ConYel wants to merge 1 commit into
Open
Conversation
Phase 3 of RFC zeroclaw-labs#7675 (Job 7). Runs on the 1st of each month, captures toolchain versions (rustc, cargo) alongside crate status, opens a GitHub issue with dependencies label when any dep is outdated. Deduplicates β links to existing issue if one is still open.
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.
Summary
Base branch:
masterWhat changed and why:
Adds a scheduled monthly scan for stale Rust dependencies via
cargo outdated, as specified in Phase 3 of RFC RFC: Hardened CI pipeline β supply-chain scanning, provenance, and SBOM generationΒ #7675 (Job 7). Opens a GitHub issue withdependencieslabel when any direct or transitive dependency has a newer version available.Runs on the 1st of every month at 09:00 UTC, plus
workflow_dispatchfor manual triggering.Scope boundary: New file β
.github/workflows/monthly-outdated.ymlBlast radius: New workflow only; no changes to existing CI, no Rust code, no config surface
Linked issue(s): RFC: Hardened CI pipeline β supply-chain scanning, provenance, and SBOM generationΒ #7675 (RFC β parent), Phase 3 Job 7 (outdated dependency alert)
Labels:
type: ci,risk: low,size: XSDesign
Why monthly, not daily?
Outdated dependencies are a maintenance concern, not a security emergency. A daily scan would desensitize the team to the output β noise that gets ignored. Monthly gives a regular, low-pressure pulse.
The advisory scan (
daily-audit.yml) runs daily and catches security-relevant advisories. They serve different purposes:cargo deny check advisories)cargo outdated)Toolchain versions included
The issue body includes
rustc --versionandcargo --versionalongside the outdated crate table. Useful context when deciding whether to bump the pinned toolchain separately from crate updates.Why
--exit-code 1?cargo outdateddefaults to exit 0 even with outdated deps. Passing--exit-code 1makes it exit 1 if anything is outdated, which we use to trigger issue creation. Without this flag, we'd need to grep the output β brittle.Dedup logic (same pattern as daily-audit)
If an "Outdated dependencies found" issue is already open, the workflow skips creation. This prevents a pile-up of monthly issues that nobody triaged. If you close the issue without fixing the deps, next month's scan opens a fresh one.
Issue body
The created issue contains the toolchain versions and
cargo outdatedoutput in a code block plus a link to the workflow run, making it easy to see what's stale without running the tool locally.Files changed
.github/workflows/monthly-outdated.ymlWhat this completes in RFC #7675
Sliding steadily through the RFC. Two items left: Cosign/SLSA (Phase 3) and deny.toml policy (Phase 4).
Security & Privacy Impact
Yesβissues: writeadded for automated issue creation)Yesβcargo install cargo-outdateddownloads from crates.io;cargo outdatedqueries crates.io for version info)No)No)Compatibility
Yesβ new workflow, zero changes to existing CI)No)Rollback
git revertremoves the workflow file with no side effects.