fix(ci): add trusted repository self-scan #12
No reviewers
Labels
No labels
app-migration
bug
ci-cd
cluster
Documentation
duplicate
enhancement
gpu
invalid
networking
question
security
Storage
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Homelab/workflows!12
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/self-security-gate"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The shared workflow repository did not run its own released security gate, so changes to scanner code could reach main without being evaluated by a trusted scanner implementation. This adds a repository caller that runs v1.1.0 on pull requests, main pushes, manual dispatches, and a weekly schedule. It also removes the unsupported GitHub permissions field from the Forgejo release workflow and updates examples to the current release.
Validation: 34 Python unit and contract tests passed; YAML, Bash, and 16 mocked scaffold cases passed; git diff --check passed.
Relates to #1, #3, and #4.
The first self-scan correctly found five blocking Semgrep audit warnings. The uploaded decision contained no secrets, Trivy findings, malware, or scanner errors. All five findings cover intentional controlled network operations: Forgejo release upload/API access, the post-deployment HTTPS health check, and checksum-verified Semgrep/tool downloads.
Commit
f9582e1adds exact mitigations owned by kiyi, linked to #4, expiring 2026-12-01, with a separate reason and compensating control for every fingerprint. The policy was evaluated against the downloaded decision: 0 blocking and 5 mitigated. It also changes future scan logs to print sanitized scanner/rule/path/line/fingerprint summaries and scanner errors without source snippets or secret values.Validation: 35 unit/contract tests passed; YAML, Bash, and all 16 mocked gate cases passed in WSL; git diff --check passed.