Skip to content

ci: merge 9.1.x up into 9.2.x - #1891

Merged
dhensby merged 7 commits into
tediousjs:9.2.xfrom
dhensby:pulls/9.2.x/ci-merge
Aug 11, 2026
Merged

ci: merge 9.1.x up into 9.2.x#1891
dhensby merged 7 commits into
tediousjs:9.2.xfrom
dhensby:pulls/9.2.x/ci-merge

Conversation

@dhensby

@dhensby dhensby commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Merge-up of #1889 (9.1.x) into 9.2.x. Second rung of the ladder; 9.3.x, 10.x and 11.x follow.

Supersedes #1890, which was cut the other way round (9.1.x as first parent). Same tree, correct parentage.

What changes on 9.2.x

 .github/workflows/nodejs.yml |   84 +-
 README.md                    |    4 +-
 package.json                 |   10 +-
 package-lock.json            | (regenerated)

No lib/ or test/ changes — the merge-base is fdf7b17, the pre-#1889 tip of 9.1.x, so 9.2.x already contained everything 9.1.x had and is ahead of it in lib/msnodesqlv8/connection-pool.js. Only the CI/release work moves forward.

Why 9.2.x needed this

test-windows could never complete. The matrix pinned os: [windows-2019, windows-2022], and windows-2019 was retired in June 2025 — 21 of 33 Windows jobs sat permanently queued rather than failing, so test-windows never finished and release (which needs it) never ran. The branch wasn't red, it was hung.

Publishing was dead. NPM_TOKEN: ${{ secrets.NPM_TOKEN }} expanded to an empty string — the repository has no Actions secrets at all. master moved to npm trusted publishing in cef6873; the maintenance branches never followed.

Inherited from #1889

  • tediousjs/setup-sqlserver pinned to the v4.0.1 SHA; SQL Server via a job service container; pinned runner labels; checkout/setup-node v7; fail-fast: false.
  • semantic-release 21 → 25 stack. @semantic-release/npm >= 13.1.0 performs the OIDC exchange itself, so the bundled npm version is irrelevant; NPM_TOKEN dropped and the release job pinned to Node 22.x.
  • Node 20/22/24 added — engines.node says >=10 while the matrix stopped at 18.
  • msnodesqlv8 gated by prebuild coverage: v2.7.0 ≤ Node 18, v4.5.0 ≥ Node 20, pinned rather than ranged. v2 publishes no prebuild above Node 19, and 5.2.2 previously removed an ABI from an existing major, reddening master with no commit to it.
  • Dead AppVeyor badge dropped from the README (the config was already gone here; the badge pointed at /branch/master).

Resolved for this branch

SQL Server 2016 kept in the Windows matrix. 2008/2012/2014 are unrecoverable — they only install on windows-2019.

package-lock.json regenerated with --lockfile-version 2 rather than left as a text merge, so it is internally consistent and npm 6 (Node 14) can still read it.

Verification

npm ci + npm run test-unit pass under nvm on Node 14.21.3 (npm 6.14.18) and 24.18.0; npm run lint clean on 18. Lockfile checked: lockfileVersion: 2, and .devDependencies/.dependencies match packages[""] exactly. No conflict markers in any merged file.

The tedious suite was previously run against Azure SQL Edge on Node 18/20/22/24 with identical results (111 passing / 5 pending), and msnodesqlv8 4.5.0 confirmed green on Node 20/22/24 across windows-2022 and windows-2025 on #1889's final run.

Windows matrix comes out at 48 jobs (2 images × 6 Node × 4 SQL). Happy to trim — dropping windows-2025 halves it — but 2025 passed cleanly on 9.1.x, so full coverage is in.

dhensby and others added 7 commits August 11, 2026 22:33
The repository has no Actions secrets, so `secrets.NPM_TOKEN` resolves to an
empty string and any publish from this branch would fail to authenticate.
master publishes via npm trusted publishing (OIDC) instead, which needs
@semantic-release/npm >= 13.1.0 — it performs the OIDC token exchange itself
rather than relying on the npm CLI version.

The lockfile is deliberately kept at lockfileVersion 2 so npm 6 (bundled with
Node 14) can still `npm ci` it. These packages require Node ^22.14 || >=24.10,
but they are only installed — never executed — on the older Node versions in
the test matrix, so the engine warnings there are harmless.
Every Windows job on this branch fails: `windows-latest` is now
windows-2025, and potatoqualitee/mssqlsuite cannot install SQL Server there.
Swap it for tediousjs/setup-sqlserver (already used from 9.2.x onwards) and
pin the runner labels rather than tracking `*-latest`, so a future image
migration is a deliberate change instead of a surprise breakage.

Other changes, all aligning this branch with the 9.2.x workflow so merges up
the maintenance line stay clean:

- Run SQL Server as a job service container instead of hand-rolled
  docker pull/save/load. This drops actions/cache@v3, whose backing service
  has been shut down, and the readiness loop that shelled out to
  /opt/mssql-tools/bin/sqlcmd — a path that no longer exists in the images.
- Bump checkout/setup-node to v7; v3 targets a Node runtime the runners now
  force-upgrade.
- Drop the x86 leg of the Windows matrix. No branch from 9.2.x onwards tests
  x86, and it doubled an already large matrix.
- Add windows-2025 alongside windows-2022, and set fail-fast: false so one
  bad combination no longer cancels the whole matrix.
This branch was master when 9.1.2 and 9.1.3 were cut, so `branches: [master]`
in .releaserc used to be correct. Now that it is a maintenance branch that
config means semantic-release exits without ever considering a release.
Dropping the key falls back to semantic-release's defaults, which already
include the `N.N.x` maintenance pattern — the same config 9.2.x onwards use.

The release job itself:

- Drop NPM_TOKEN. The repository has no Actions secrets at all, so it expanded
  to an empty string; authentication now comes from the OIDC id-token, as on
  master.
- Pin Node to 22.x. `lts/*` happens to satisfy the new semantic-release engine
  range today, but only by luck of which line is current LTS.
- Guard on `github.repository_owner == 'tediousjs'` so pushes to a fork do not
  attempt a release, matching every later branch.
package.json declares `engines.node: >=10`, so this branch claims support for
every Node release since, but the matrix stopped at 18 — the last three LTS
lines were entirely untested. Verified locally against Azure SQL Edge before
widening: the tedious suite gives an identical 111 passing / 5 pending on Node
18, 20, 22 and 24.

Widening the matrix forces a decision on msnodesqlv8, because v2 publishes no
prebuilt binary above Node 19 and its install script falls through to a
node-gyp source build when a prebuild is missing. Rather than adopting master's
full v2/v3/v4/v5 fan-out, each Node version installs the single major that has
a prebuild for it: v2.7.0 up to Node 18, v4.5.0 from Node 20. v3 is a strict
subset of v4's prebuild coverage, and v5 has never shipped a Node 18 binary.

Versions are pinned rather than ranged, which is the one deliberate departure
from master. msnodesqlv8 5.2.2 removed the Node 20 prebuild from an existing
major and broke master's CI without a commit to master; a branch that goes
months between commits would instead discover that while trying to ship a
security fix, since `release` needs `test-windows`.
The AppVeyor project still exists but has recorded zero builds, and
appveyor.yml pins `image: Visual Studio 2015` — an image AppVeyor retired long
ago — so nothing here has run in years. Windows coverage moved to GitHub
Actions, which now tests more Node and SQL Server combinations than this ever
did.

9.2.x onwards already deleted the config; only 9.1.x still carried it. The
README badge outlived it on every maintenance branch and pointed at
`/branch/master`, so it reported the status of a branch that has had no
appveyor.yml since 9a08da0 rather than the branch you were reading.

test/scripts/ contained nothing but the two AppVeyor helpers and nothing
referenced them, so the directory goes with it. Mirrors master's 09c1e64.
ci: get 9.1.x building and releasable again
@dhensby
dhensby merged commit 0a1ce68 into tediousjs:9.2.x Aug 11, 2026
69 checks passed
@dhensby
dhensby deleted the pulls/9.2.x/ci-merge branch August 11, 2026 23:29
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