Skip to content

feat(actions-runner): bake actionlint into the mise toolchain - #6

Merged
swibrow merged 1 commit into
mainfrom
feat/actions-runner-actionlint
Aug 7, 2026
Merged

feat(actions-runner): bake actionlint into the mise toolchain#6
swibrow merged 1 commit into
mainfrom
feat/actions-runner-actionlint

Conversation

@swibrow

@swibrow swibrow commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add actionlint to images/actions-runner/mise.toml (same static-binary category as hadolint/shellcheck)
  • Bump metadata.yaml version to 2.336.0-4 (content changed, RUNNER_VERSION did not)

Why

home-ops' checks.yaml workflow lints every GitHub Actions workflow file with actionlint on every PR. It currently curl+checksum-verifies the binary fresh on each run. Baking it into this runner image removes that per-run fetch, matching how hadolint/shellcheck/yq are already handled here.

Test plan

  • container build -t actions-runner:local -f images/actions-runner/Dockerfile images/actions-runner succeeds, mise installs actionlint@1.7.12 via the aqua backend with attestation verification
  • metadata.yaml's test command passes against the built image (generic mise-tool loop picks up actionlint automatically)
  • actionlint --version resolves through the mise shim inside the image
  • CI build/scan/publish on merge

home-ops' new "checks" workflow lints every workflow file with actionlint
on every PR; fetching+checksum-verifying the binary fresh each run is
exactly the per-repo drift this image exists to absorb. Add it to
mise.toml alongside hadolint/shellcheck (same static-binary, workflow
tooling category) and bump the revision so IfNotPresent-pulling scale
sets pick up the new tag.

Signed-off-by: swibrow <15628653+swibrow@users.noreply.github.com>
@swibrow
swibrow merged commit b184373 into main Aug 7, 2026
5 checks passed
@swibrow
swibrow deleted the feat/actions-runner-actionlint branch August 7, 2026 05:49
swibrow added a commit that referenced this pull request Aug 7, 2026
Same rationale as actionlint (#6): home-ops' checks.yaml runs
pre-commit's terraform_tflint hook on every PR, which shells out to a
bare `tflint` on PATH — this image didn't ship one. Static,
version-insensitive binary, same category as hadolint/shellcheck.

Signed-off-by: swibrow <15628653+swibrow@users.noreply.github.com>
swibrow added a commit to swibrow/home-ops that referenced this pull request Aug 7, 2026
Move checks.yaml off ubuntu-latest onto the home-ops ARC scale set,
pinned to ghcr.io/cloudsnacks/actions-runner:2.336.0-5 (cloudsnacks/containers#6,
#7), which bakes actionlint and tflint into its mise toolchain instead of
fetching+checksumming them on every PR. Only the runner container's image
is overridden — initContainers/volumes stay inherited from the shared
values.yaml so the dind setup is untouched.

python (for pre-commit) and terraform (for terraform_fmt) still come from
setup-* actions per run — neither is a static, version-insensitive
binary, so per the runner image's own convention they don't belong baked
in. Also fixes a latent gap from the previous commit: this required
check never actually ran on a PR yet, and neither ubuntu-latest nor the
custom runner ship terraform/tflint, so terraform_fmt/terraform_tflint
would have failed on first run.

Signed-off-by: swibrow <15628653+swibrow@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant