Reference in-repo workflows with GitHub's self-repository syntax - #700
Conversation
zizmor 1.30.0, which zizmor-action 0.6.3 runs by default, adds a self-repository audit that flags workspace-relative `uses: ./...` references to in-repo actions and reusable workflows. GitHub's `uses: $/...` form resolves against the running commit rather than the checked-out filesystem, so it can't pick up an action cloned by an earlier step, and GitHub counts it as pinned. This repo pins zizmor 1.29.0 explicitly (the action's `version:` input and .mise.toml) and would fail the audit as soon as that pin moves to 1.30.0. actionlint 1.7.12 rejects the new form and no release knows it yet (rhysd/actionlint#711), so an actionlint config ignores that one message for workflow files, with a note to drop it once a release does. Same change as basecamp/hey-sdk#171 and #174.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Sensitive Change Detection (shadow mode)This PR modifies control-plane files:
|
There was a problem hiding this comment.
🟢 Approved
The syntax and compatibility rule are correctly scoped, and the GitHub Actions audit passes.
Pull request overview
Updates reusable workflow references to GitHub’s pinned self-repository syntax and accommodates actionlint 1.7.12.
Changes:
- Replaces two local workflow references with
$/.... - Adds a narrowly scoped actionlint compatibility rule.
[!TIP]
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or rungh pr ready --undo.
Click "Ready for review" or rungh pr readyto reengage.
File summaries
| File | Description |
|---|---|
.github/workflows/release.yml |
Uses self-repository workflow references. |
.github/actionlint.yaml |
Suppresses actionlint’s unsupported-syntax diagnostic. |
Review details
- Files reviewed: 2/2 changed files
- Comments generated: 0
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
The ignore for actionlint 1.7.12's rejection of the `$/` reusable-workflow form now names the exact calls this repository makes, so a new `$/` call is a deliberate edit to the config rather than a silent pass. actionlint accepts `$/path@ref` as the owner/repo/path@ref shape with or without this ignore, so the scoping is about new sites, not malformed references.
…is fixes This repo pins zizmor explicitly through the action's version input and .mise.toml, so the Dependabot bump of the action alone (#698) would have left CI on 1.29.0 and the self-repository fix in the previous commit untested. Both pins move to 1.30.0 together with the action, whose version map at 0.6.2 does not know 1.30.0, so the audit job on this branch is the proof.
…endor-hash * origin/main: ci: bump zizmorcore/zizmor-action in the github-actions group (#698) Reference in-repo workflows with GitHub's self-repository syntax (#700) Kill the Codex probe's process group when its deadline expires (#694) Refresh the Nix vendorHash for the go-dependencies bump (#701)
zizmor 1.30.0, which zizmor-action 0.6.3 runs by default, adds a self-repository audit that flags workspace-relative
uses: ./...references to in-repo actions and reusable workflows. This rewrites the two reusable-workflow calls inrelease.ymlto GitHub'suses: $/...form. GitHub'suses: $/...form is the syntax GitHub now recommends for same-repository references and the one zizmor's audit requires. For a job-level reusable-workflow call it changes nothing at runtime:./already resolves to the caller's commit, and reusable workflows are exempt from the org SHA-pinning policy, so the gain is conformance with the recommended form, not security. This repo pins zizmor 1.29.0 explicitly (the action'sversion:input and.mise.toml), so the audit fails as soon as that pin moves to 1.30.0.actionlint 1.7.12 rejects the new form and no release knows it yet (rhysd/actionlint#711), so
.github/actionlint.yamlignores that one message for workflow files, with a note to drop it once a release does. Locally: actionlint exits 0 with the config and 1 without it; zizmor 1.30.0 reports no findings after the change.CI's audit job on this PR is the proof.
Same change as basecamp/hey-sdk#171 and #174.
Summary by cubic
Converts the two reusable-workflow calls in
release.ymlfromuses: ./...to GitHub'suses: $/...form, which resolves against the running commit and counts as pinned under zizmor 1.30.0's self-repository audit.Bumps zizmor-action to 0.6.3 and zizmor to 1.30.0 in the action's
version:input and.mise.toml, so CI runs the audit this change addresses; the 0.6.2 version map doesn't know 1.30.0, so the pins move together and the audit job on this branch is the proof.Adds
.github/actionlint.yamlto ignore actionlint 1.7.12's rejection of the$/form until a release recognizes it (rhysd/actionlint#711). The ignore names the exact calls, so a new$/call requires a deliberate config edit rather than passing silently.Written for commit 792dd65. Summary will update on new commits.