Repository navigation
ci: scan every main push and use shallow verify checkouts - #81
Conversation
Push and dispatch runs get their own concurrency group, so a third push no longer cancels a pending run whose range was never scanned. Pull request runs still cancel superseded ones. Verify jobs keep the default checkout depth; the scan deepens its own clone and the release workflow keeps full history.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
Changes to the CI workflow's security-scan history coverage and release-pipeline concurrency warrant final human verification despite no identified defects.
Review effort: Balanced
Findings: None
What changed in this PR
This PR adjusts the CI workflow (.github/workflows/ci.yml) so that every main push completes its run rather than being superseded, ensuring the secret/workflow scan covers each pushed commit range. It also drops full-history checkouts in the two verification jobs, since the shared scan action (v1.2.0) already deepens its own clone to the pushed range (or unshallows on workflow_dispatch). This fits the repo's release/CI model where main pushes gate semantic-release, and releases stay serialized by the shared release workflow's own concurrency group.
Changes:
- Replaced the single per-ref concurrency group with a per-run group (
github.run_id) for push/dispatch while keeping per-ref cancellation for pull requests. - Removed
fetch-depth: 0from theverifyandverify-consumer-surfacecheckouts, relying on the scan action's self-deepening.
| File | Description |
|---|---|
.github/workflows/ci.yml |
Scopes concurrency per run for push/dispatch (so no pending run is cancelled before its range is scanned) and switches verify checkouts to default shallow depth. |
I verified the key assumptions behind this change: the pinned scan action's plan.sh self-deepens the checkout to before..HEAD (falling back to --unshallow), so dropping fetch-depth: 0 does not starve the secret/workflow scan of history; the verify and test:consumer scripts (vp check/pack/knip/test) require no git history; and the concurrency expression resolves to github.ref for PRs and github.run_id otherwise, matching the described behavior. docs/DISTRIBUTION.md already documents the scan's range/full-history behavior, so no doc update is needed. I found no issues to comment on.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Every
mainpush now finishes its CI run, so the secret and workflow scan covers each pushed range, and verification checks out one commit instead of full history.CI-refs/heads/maingroup; a third push cancels the pending second run, whose range is never scannedverifyandverify-consumer-surfacecheckoutsrelease-<repo>-maingroup, which keeps full history for semantic-release. That group holds one pending release, so if three pushes land within one release and the older verify finishes last, semantic-release skips the stale commit and the newer commits publish on the next push.actionlint1.7.12 andzizmor1.29.0 report nothing on this branch locally, and the firstmainrun after merge audits the change.verifyand the release job onmain; aci:commit publishes nothing.Written by an agent (Claude Code, Claude Opus 5.5)