ci: add zizmor audit and consolidate gh-actions checks#126
Merged
Conversation
Introduce zizmor 1.25.2 (mise) as a static analyzer for GitHub Actions workflows and composite actions, alongside the existing actionlint. Consolidate both into a single audit-actions.yaml workflow with two parallel jobs to share trigger / permissions / concurrency declarations. Also add persist-credentials: false to every actions/checkout step that lacked it, resolving the artipacked findings zizmor raised at baseline. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
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
Introduce
zizmoras a second static analyzer for GitHub Actions workflows and composite actions, focused on security-oriented checks (credential persistence, code injection, over-privilegedGITHUB_TOKEN, etc.) that complement whatactionlintalready covers syntactically.zizmor = "1.25.2"tomise.tomlso the runner picks it up via the existingsetupcomposite action.actionlint.yamlworkflow with the newzizmoraudit into a singleaudit-actions.yamlworkflow with two parallel jobs (actionlint,zizmor), sharing trigger, permissions, and concurrency declarations. The trigger now also watchesaction.yamlso the JS action manifest is covered by zizmor.artipackedwarnings zizmor raised at baseline by addingpersist-credentials: falseto everyactions/checkoutstep that lacked it acrossaudit-actions.yaml,ci.yaml(commitlint + build_and_test), ande2e.yaml(dogfood). Thepublishjob already had it.Local verification:
SARIF upload to GitHub Code Scanning is intentionally out of scope for this PR — fork PRs downgrade
security-events: writeto read-only, which would need an extra guard. The current console-output + non-zero exit code is enough to block merges on new findings.References