Skip to content

ci: test on Node 26, pin every action, fold the checks job in - #358

Merged
alexander-akait merged 1 commit into
mainfrom
ci/matrix-and-pinned-actions
Sep 14, 2026
Merged

alexander-akait merged 1 commit into
mainfrom
ci/matrix-and-pinned-actions

Conversation

@alexander-akait

Copy link
Copy Markdown
Member

Summary

Three things.

Node 26 joins 22 and 24 across the three platforms.

Every action is pinned to the commit its tag names, with the version as a comment, the way less-loader does it — actions/checkout@v6.0.2, actions/setup-node@v6.4.0, codecov/codecov-action@v6.0.0, and actions/dependency-review-action moved from v4 to v5.0.0. Each SHA was read back from the tag with git ls-remote refs/tags/<v>^{} before it was written down, rather than copied on trust. release.yml was already pinned.

test-checks is gone. Of its four combinations only one covered anything: npm ci installs eslint 10.10.0 and stylelint 17.15.0 already, which is exactly what eslint@10.x and stylelint@17.x resolve to — so three of the four were the default install under another name. The one that wasn't, the oldest ESLint the peer range names, is a matrix entry now and runs test:coverage like every other test job instead of test:only.

Two details worth flagging in review:

  • The ESLint version is part of the concurrency group. Without it the eslint 9.x entry and the ubuntu / 22.x / latest entry share a group and cancel each other.
  • The include entry creates a new combination rather than editing an existing one, because it would otherwise overwrite eslint-version. Expanded and checked: 10 test jobs, 10 distinct concurrency groups.

The lint job gains cache: "npm", which it was missing.

What kind of change does this PR introduce?

ci.

Did you add tests for your changes?

n/a — this is the test configuration. It checks itself: this PR's own run is the new matrix, including the ESLint 9 job and the three Node 26 jobs.

Does this PR introduce a breaking change?

No.

If relevant, what needs to be documented once your changes are merged or what have you already documented?

n/a.

Use of AI

AI was used. It read less-loader's workflows for the pinning convention, verified each SHA against the action's own tag, checked which of the dropped job's combinations were real coverage by resolving the versions, and expanded the matrix to confirm the job count and that no two jobs share a concurrency group.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GzZci4NQeiqwdrVfd7dGXy


Generated by Claude Code

Node 26 joins 22 and 24 across the three platforms.

Every action is pinned to the commit its tag names, with the version as a
comment, the way `less-loader` does it — each one read back from the tag
before it was written down.

The `test-checks` job is gone. Of its four combinations only one covered
anything: `npm ci` installs eslint 10.10.0 and stylelint 17.15.0 already,
which is what `eslint@10.x` and `stylelint@17.x` resolve to. The one that
did — the oldest ESLint the peer range names — is a matrix entry now, so
it runs the same command as every other test job. Its version is part of
the concurrency group as well, or it would cancel the run it shares a
platform and a Node version with.
@alexander-akait
alexander-akait merged commit 0c876f7 into main Sep 14, 2026
15 checks passed
@alexander-akait
alexander-akait deleted the ci/matrix-and-pinned-actions branch September 14, 2026 14:46
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