Skip to content

Commit 2c8f408

Browse files
authored
Pin bin/ci's tool versions in .mise.toml (#649)
bin/ci fails cold in a fresh worktree: mise shims for actionlint, shellcheck, and pwsh exist machine-wide but no version is pinned for this project, so each one dies with "No version is set for shim". shellcheck isn't even invoked by the repo directly — actionlint shells out to it to lint workflow run: blocks, so the broken shim takes actionlint down with it. zizmor is worse than unpinned: make lint-actions hard-fails without it and make tools can't install it (brew/pacman only). Pin all four in [tools] so mise install makes bin/ci self-sufficient: * actionlint 1.7.12 — matches the .github/workflows/test.yml action pin * shellcheck 0.11.0 — actionlint's dependency; CI uses the runner's preinstall * powershell 7.6.5 — no CI pin to mirror (runners preinstall pwsh); turns the three fail-closed-in-CI installer.bats pwsh tests into locally-running tests * zizmor 1.29.0 — also pinned via the workflow's version input, matching what CI already ran: the action resolves its version (including the "latest" default) through a digest map checked in at its pinned SHA, where "latest" maps to 1.29.0. The explicit pin keeps the release from shifting when the action SHA is bumped and keeps local bin/ci on the same analyzer as CI. Each pin carries a sync comment mirroring the existing goreleaser convention.
1 parent 3008d9b commit 2c8f408

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

‎.github/workflows/test.yml‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ jobs:
9595
- name: Run zizmor
9696
uses: zizmorcore/zizmor-action@3dc1ecc9bcb9e94e9b2c709687979e1298497054 # v0.6.2
9797
with:
98+
# The action resolves `version` (default "latest") through the digest
99+
# map checked in at its pinned SHA, so this stays stable either way —
100+
# the explicit pin keeps the release from shifting when the action SHA
101+
# is bumped, and matches the .mise.toml zizmor pin for local parity.
102+
version: "1.29.0"
98103
advanced-security: false
99104

100105
security:

‎.mise.toml‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,14 @@
22
go = "1.26"
33
# Keep in sync with .github/workflows/release.yml GoReleaser CLI version pin.
44
goreleaser = "2.15.4"
5+
# Keep in sync with .github/workflows/test.yml rhysd/actionlint version pin.
6+
actionlint = "1.7.12"
7+
# Not invoked directly; actionlint shells out to it to lint workflow `run:`
8+
# scripts (CI uses the runner's preinstalled shellcheck).
9+
shellcheck = "0.11.0"
10+
# No CI pin to match; runners preinstall pwsh. Lets e2e/installer.bats pwsh
11+
# tests run locally instead of skipping.
12+
powershell = "7.6.5"
13+
# Keep in sync with the zizmor-action `version:` input in
14+
# .github/workflows/test.yml so local bin/ci runs the same release CI does.
15+
zizmor = "1.29.0"

0 commit comments

Comments
 (0)