Skip to content

ci: switch actionlint to the kjanat fork; use $/ for the local workflow - #68

Merged
tsvikas merged 2 commits into
mainfrom
actionlint-kjanat
Sep 27, 2026
Merged

tsvikas merged 2 commits into
mainfrom
actionlint-kjanat

Conversation

@tsvikas

@tsvikas tsvikas commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner

zizmor 1.30's new self-repository audit fails lint in every generated project with PyPI enabled. It wants uses: $/.github/workflows/ci.yml in build-and-publish.yml, GitHub's self-repository syntax from 2026-07-30. Upstream rhysd/actionlint rejects that syntax (rhysd/actionlint#711). Its last release was v1.7.12 on 2026-03-30 and its last commit was on 2026-04-19 (rhysd/actionlint#719).

This currently blocks CI on #64.

Changes

  • Pre-commit configs: both the template repo's config and the generated projects' config now use kjanat/actionlint, a maintained drop-in fork with the same hook id. The template repo's own hook is pinned to v1.17.0.
  • build-and-publish.yml.jinja: uses: ./.github/workflows/ci.yml → uses: $/.github/workflows/ci.yml.
  • update: block in both pre-commit configs: restricts prek's auto-update for the fork to v*.*.* tags. The fork points moving minor tags (v1.17) at off-branch commits made for its Docker action, and without the filter prek auto-update picks them as the newest tag. pre-commit accepts the config but prints Unexpected key(s) present at root: update on each run; its autoupdate already takes only tags reachable from the default branch, so it lands on v1.17.0 either way.

Why this fork

  • Adoption: Weblate (whole org, following each release), NVDA, Chapel, PennyLane's shared hooks and SBB use it; a nixpkgs PR moving the actionlint package to it is open. It appears in about 116 pre-commit configs, against about 4.7k for upstream.
  • Release hygiene: releases carry build provenance, CI pins actions by SHA, and the default branch requires green PRs.
  • Risks:
    • One maintainer, and a fast release pace (v1.10 → v1.17 in about two months).
    • v1.16 turned three cache-safety policies on by default, even though the fork had said policies were opt-in. A future default-on check could fail lint in generated projects; deps-update would surface it.
  • Alternatives considered:
    • Keep upstream and ignore the two $/ errors in an actionlint config.
    • Keep ./ and add # zizmor: ignore[self-repository].
    • Both work, but they keep the template on a frozen linter.

Verification

  • TMPDIR=/tmp uv run ctt --continue-on-error: all 7 variants pass (lint including actionlint and zizmor, tests, release, docs). Each generated project's deps-update resolves the fork to v1.17.0.
  • just lint and prek validate-config pass in the template repo.
  • pre-commit 4.6.2: validate-config exits 0 (with the warning above), autoupdate goes v1.16.0 → v1.17.0, and the hook runs.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GyMoD8tx4oz1bpJ1tEL845

rhysd/actionlint has not released since 2026-03 and rejects GitHub's
self-repository `uses: $/...` syntax (rhysd/actionlint#711), which
zizmor 1.30's self-repository audit requires. kjanat/actionlint is a
maintained drop-in fork (rhysd/actionlint#719) that accepts it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01GyMoD8tx4oz1bpJ1tEL845

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!

Sourcery assessment

Approved.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

The fork points minor tags (v1.17) at off-branch commits made for its
Docker action, and prek picks them as the newest tag. pre-commit ignores
the `update:` key with a warning, and its autoupdate already only takes
tags reachable from the default branch.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01GyMoD8tx4oz1bpJ1tEL845
@tsvikas
tsvikas merged commit 1210ad3 into main Sep 27, 2026
5 checks passed
@tsvikas
tsvikas deleted the actionlint-kjanat branch September 27, 2026 12:03
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