Skip to content

feat(github-actions.actionlint): lint with jactionlint - #37

Merged
posquit0 merged 2 commits into
mainfrom
feat/jactionlint
Oct 11, 2026
Merged

posquit0 merged 2 commits into
mainfrom
feat/jactionlint

Conversation

@posquit0

@posquit0 posquit0 commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

👋 Background

Upstream actionlint has fallen behind recent actions. v1.7.12 still requires app-id for actions/create-github-app-token@v3 and rejects client-id, the input that replaces it. mise has deprecated actionlint in its registry in favor of jdx/jactionlint (jdx/mise#13960), an actively maintained fork. Its correctness profile runs the checks of the original actionlint.

What changed

  • github-actions.actionlint composite action
    • Run jactionlint with its POSIX options (--no-color, --config-file=, --shellcheck=, --format=json).
    • Add a profile input. It defaults to correctness, so existing callers keep the same rules.
    • Annotate each finding with the workflow command for its severity (error → ::error, warn → ::warning, everything else → ::notice), and use the rule id as the title.
  • github-actions.integration reusable workflow
    • Install jactionlint (registry name, resolves to github:jdx/jactionlint), pinned to 2.1.0 by default because jactionlint releases add checks.
    • Add an actionlint_profile input and pass it to the action.
    • Existing input names (actionlint_*) are unchanged. No caller passes them today.

Notes

  • Merge after chore(mise.setup-tools): bump the default mise to v2026.10.8 #39. The jactionlint registry entry first shipped in mise v2026.10.3, and mise.setup-tools pins v2026.9.2 until chore(mise.setup-tools): bump the default mise to v2026.10.8 #39 bumps it to v2026.10.8. Merged before chore(mise.setup-tools): bump the default mise to v2026.10.8 #39, the integration workflow fails to install jactionlint in every caller repository. Checked locally: mise v2026.10.8 installs jactionlint@2.1.0 by its short name and verifies its GitHub artifact attestation.
  • This PR's own CI still runs the @main workflow (upstream actionlint), so it does not exercise the change. Checked locally on macOS:
    • The composite run scripts, run against sample workflows with the correctness and pedantic profiles and with shellcheck on and off, produce the expected ::error / ::warning lines.
    • The config file is still discovered when files are passed explicitly.
    • yamllint, check-jsonschema (workflows and actions), and jactionlint --profile=correctness pass on the changed files.
  • Expected red run after merge: jactionlint flags app-id in github.pr.claude-code.yaml as deprecated, so the push run on main will fail on that one finding. The follow-up PR moves it to client-id. It is split out because upstream actionlint, which this PR's CI uses, rejects client-id.
  • Local jactionlint --profile=correctness on this repo's composite actions finds 21 issues (13 in misc.string-interpolation, mostly template-injection). That is out of scope here because this action only lints top-level workflow files.

Upstream actionlint (v1.7.12) has not caught up with recent actions: it
still requires `app-id` for `actions/create-github-app-token@v3` and
rejects `client-id`. Switch to jactionlint, an actively maintained fork
that mise now recommends in place of actionlint.

- Run `jactionlint` with its POSIX options and add a `profile` input.
  The default `correctness` profile runs the checks of the original
  actionlint, so existing callers get the same rules.
- Map the finding severity to `::error`, `::warning` or `::notice`, and
  title annotations with the rule id.
- Install `github:jdx/jactionlint` pinned to 2.1.0 in the integration
  workflow and pass the new `actionlint_profile` input. The backend is
  named explicitly because the pinned mise (v2026.9.2) predates the
  `jactionlint` registry entry. Input names are unchanged.
@github-actions

Copy link
Copy Markdown

👋 Welcome! Looks like this is your first pull request.

Hey, thanks for your contribution! Please give us a bit of time to review it. 😄

Please check out our contributing guidelines.

@github-actions github-actions Bot added 💾 actions This issue or pull request is related to actions. 💾 workflows This issue or pull request is related to workflows. size/S Small size issue or PR. labels Oct 11, 2026
@github-actions

Copy link
Copy Markdown

GitHub Actions Integration

Repository actionlint check-jsonschema (workflows) check-jsonschema (actions)
tedilabs/github-actions ✅ ✅ ✅

✅ All 1 passed.

… name

The default mise of `mise.setup-tools` is bumped to v2026.10.8 in #39,
which knows the `jactionlint` registry entry.
@posquit0
posquit0 merged commit 1cb43ca into main Oct 11, 2026
7 checks passed
@posquit0
posquit0 deleted the feat/jactionlint branch October 11, 2026 15:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💾 actions This issue or pull request is related to actions. 💾 workflows This issue or pull request is related to workflows. size/S Small size issue or PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant