Skip to content

feat: install cumulative updates for SQL Server 2025 - #297

Merged
dhensby merged 3 commits into
tediousjs:masterfrom
dhensby:feat/sql-2025-cumulative-updates
Oct 12, 2026
Merged

dhensby merged 3 commits into
tediousjs:masterfrom
dhensby:feat/sql-2025-cumulative-updates

Conversation

@dhensby

@dhensby dhensby commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

Microsoft now publishes cumulative updates for SQL Server 2025 at https://www.microsoft.com/en-us/download/details.aspx?id=108788, so this adds it as the 2025 updateUrl and drops the stale "updateUrl can be added once…" comment.

Because latest (the default sqlserver-version) resolves to 2025, anyone using install-updates: true on the default version has been getting no CU at all. With this change they get the latest CU (currently KB5122048, 17.0.5005.3) applied during setup. That's a change in what users get by default, hence feat:.

Builds on #295 (the reworked CU page resolver). I ran that resolver against the live 2025 page: it resolves to exactly one x64 installer, https://download.microsoft.com/download/10a21237-8b59-4fcd-b878-bfe8fcabdc7a/SQLServer2025-KB5122048-x64.exe.

Setup exit code 3010

With the CU applied, setup on windows-2025 runners finishes with Final result: Passed but reboot required and exit code 3010. Patch Level is 17.0.5005.3, so the update itself installed fine. @actions/exec treated that as a failure. A separate fix: commit now treats 3010 as success with a warning. Any other non-zero exit code still fails the action. With wait-for-ready on, a database that doesn't come up after a 3010 fails the action instead of only warning, so a reboot-dependent install can't pass. This applies to every version, not just 2025.

Other tools handle 3010 the same way: Chocolatey's SQL Server packages, dbatools and actions/runner-images all treat 0/3010 as success. /SkipRules=RebootRequiredCheck wouldn't help, because that rule runs before install and passed here. Our logs don't name the component that asked for the reboot. The leading suspect is the LocalDB 17 that comes pre-installed on the windows-2025 image only, which the CU replaces.

Changes

  • src/versions.ts: 2025 entry gets its updateUrl
  • test/versions.ts: asserts an update URL is configured for 2016 through 2025
  • test/install.ts: covers an SSEI install with install-updates: true (passes /UPDATEENABLED=1 and /UpdateSource). Nothing tested that combination before
  • README.md: says which versions get cumulative updates
  • src/install.ts: setup exit code 3010 logs a warning and continues, and if the database isn't ready afterwards the action fails. Other non-zero codes throw. Tests cover each path, and README + copilot-instructions document it
  • lib/: rebuilt

Verification

  • npm run lint:fix, npm test (155 passing), npm run build

  • CI runaction (run 37911525309, all green). @@VERSION comes from the readiness probe:

    Job Setup exit @@VERSION
    windows-2022, sql-2025 0 2025 (RTM-CU9) (KB5122048) - 17.0.5005.3
    windows-2022, sql-latest 0 2025 (RTM-CU9) (KB5122048) - 17.0.5005.3
    windows-2025, sql-2025 3010 → warning, DB ready on first probe 2025 (RTM-CU9) (KB5122048) - 17.0.5005.3
    windows-2025, sql-latest 3010 → warning, DB ready on first probe 2025 (RTM-CU9) (KB5122048) - 17.0.5005.3

    So 2025 setup extracted by SSEI accepts /UPDATEENABLED=1 /UpdateSource, and the instance runs the CU without a reboot.

🤖 Generated with Claude Code

Copilot AI 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.

🟢 Approval recommended

The configuration, tests, documentation, and generated bundle consistently implement SQL Server 2025 cumulative updates.

0 open findings

What changed in this PR

Adds cumulative-update support for SQL Server 2025, including the default latest version.

Changes:

  • Configures the official SQL Server 2025 update page.
  • Adds SSEI update-installation and version-registry tests.
  • Updates documentation and generated artifacts.
File Description
src/​versions.ts Adds the 2025 cumulative-update URL.
test/​versions.ts Verifies supported update configurations.
test/​install.ts Tests updates during SSEI installation.
README.md Documents update-supported versions.
lib/​main/​index.js Rebuilds the action bundle.
lib/​main/​index.js.map Updates the bundle source map.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@dhensby
dhensby force-pushed the feat/sql-2025-cumulative-updates branch 3 times, most recently from 3689401 to 0f775c0 Compare October 12, 2026 08:57
dhensby and others added 3 commits October 12, 2026 10:32
Setup exits with 3010 when it succeeds but wants a reboot, which a
runner can't do mid-job. Previously @actions/exec rejected that as a
failure even though the instance was installed. Log a warning instead
and continue. Because the instance may genuinely need that reboot, a
database that never becomes ready after a 3010 now fails the action
(when wait-for-ready is enabled) rather than only warning. Any other
non-zero exit code still fails the action.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Microsoft now publishes cumulative updates for SQL Server 2025, so
configure its update URL. Because `latest` resolves to 2025, users
with `install-updates: true` on the default version previously got no
cumulative update at all; they now get the latest CU applied during
setup.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dhensby
dhensby force-pushed the feat/sql-2025-cumulative-updates branch from 0f775c0 to 32ab948 Compare October 12, 2026 09:33
@dhensby
dhensby merged commit b598b01 into tediousjs:master Oct 12, 2026
18 checks passed
@dhensby
dhensby deleted the feat/sql-2025-cumulative-updates branch October 12, 2026 15:06
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 4.1.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants