You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 48fd46e
Browse filesBrowse the repository at this point in the historyBrowse files
4. Downloads or cache-hits the SQL Server installer (box+exe, standalone exe, or SSEI bootstrapper)
49
-
5. Optionally downloads cumulative updates (resolves Microsoft download-page JSON, falls back to legacy links if metadata is unusable, retries network errors, timeouts and all non-2xx page responses up to three times with 5- and 10-second delays, and warns then installs without updates if the download fails)
49
+
5. Optionally downloads cumulative updates (resolves Microsoft download-page JSON, falls back to legacy `<a href>`links if the metadata is missing or unusable, fetches the page up to three times, retrying network errors, timeouts and non-2xx responses after 5 and then 10 seconds, and if resolving or downloading the update fails, warns and installs without updates)
50
50
6. Runs the installer via `@actions/exec`
51
51
7. Waits for the database to be ready (exponential backoff)
52
52
53
53
**Installer abstraction:**`src/installers/` contains a base `Installer` class and `MsiInstaller` subclass used by the native client and ODBC installations. SQL Server itself uses direct exe/box download logic or the SSEI bootstrapper (for 2025+) in `src/utils.ts`.
54
54
55
-
**Version registry:**`src/versions.ts` defines a `Map<string, VersionConfig>` with download URLs (exe/box or SSEI), optional update URLs, and OS compatibility constraints for each supported SQL Server version (2008–2025). SQL Server 2025+ uses the SSEI bootstrapper model (`sseiUrl`) instead of direct exe/box downloads. For SSEI versions, `downloadSseiInstaller()` downloads the media into an isolated temporary directory before extracting and caching the installer. Box and SSEI installers are both extracted into their own temporary directory before caching.
55
+
**Version registry:**`src/versions.ts` defines a `Map<string, VersionConfig>` with download URLs (exe/box or SSEI), optional update URLs, and OS compatibility constraints for each supported SQL Server version (2008–2025). SQL Server 2025+ uses the SSEI bootstrapper model (`sseiUrl`) instead of direct exe/box downloads. For SSEI versions, `downloadSseiInstaller()`first downloads the media into its own temporary directory. Box and SSEI media are then extracted into a fresh temporary directory by `extractAndCacheInstaller()`, which checks that `setup.exe` was produced before adding it to the tool cache.
56
56
57
57
**Build output:** Rollup (config in `rollup.config.mjs`) bundles everything into `lib/main/index.js` as a minified ESM module, which is what `action.yml` references. The `lib/` directory is committed to the repository. **Every commit must include up-to-date build output** — CI checks this by rebuilding and running `git diff-files --quiet`. Always run `npm run build` and commit the resulting changes to `lib/` and `README.md` before pushing.
Copy file name to clipboardExpand all lines: action.yml
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ inputs:
6
6
description: 'Skip OS checks that will stop installation attempts preemptively.'
7
7
default: 'false'
8
8
sqlserver-version:
9
-
description: 'SQL Server version: 2008, 2012, 2014, 2016, 2017, 2019, 2022, or 2025. "latest" selects 2025.'
9
+
description: 'SQL Server version: 2008, 2012, 2014, 2016, 2017, 2019, 2022, or 2025. "latest" selects 2025. 2008, 2012 and 2014 only pass the OS check on Windows Server 2019 or older, which GitHub-hosted runners no longer offer; set skip-os-check to attempt them on newer runners.'
10
10
default: 'latest'
11
11
native-client-version:
12
12
description: 'Version of native client to install. Only 11 is supported.'
Copy file name to clipboardExpand all lines: src/install.ts
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -88,7 +88,7 @@ export default async function install() {
88
88
message+=`windows-${max}`;
89
89
}
90
90
message+='.';
91
-
thrownewError(`Runner version windows-${osVersion} is not supported for SQL Server ${version}. ${message}`);
91
+
thrownewError(`Runner version windows-${osVersion} is not supported for SQL Server ${version}. ${message} Alternatively, set skip-os-check to attempt the installation anyway.`);
message: 'Runner version windows-2022 is not supported for SQL Server maxOs. Please use windows-2019.',
212
+
message: 'Runner version windows-2022 is not supported for SQL Server maxOs. Please use windows-2019. Alternatively, set skip-os-check to attempt the installation anyway.',
message: 'Runner version windows-2019 is not supported for SQL Server minOs. Please use windows-2022.',
219
+
message: 'Runner version windows-2019 is not supported for SQL Server minOs. Please use windows-2022. Alternatively, set skip-os-check to attempt the installation anyway.',
message: 'Runner version windows-2016 is not supported for SQL Server minMaxOs. Please use windows-2019 to windows-2022.',
226
+
message: 'Runner version windows-2016 is not supported for SQL Server minMaxOs. Please use windows-2019 to windows-2022. Alternatively, set skip-os-check to attempt the installation anyway.',
[[{url: 'https://example.com/untrusted.exe'},{url: 'https://example.com/untrusted.exe'},{url: ''},{url: 42}],'File list has no HTTPS download.microsoft.com .exe installer (found: https://example.com/untrusted.exe)'],
576
+
[[],'File list has no HTTPS download.microsoft.com .exe installer'],
577
+
]asconst){
578
+
it(`names metadata without a usable installer when no legacy link exists: ${problem}`,async()=>{
0 commit comments