Skip to content

Add a Windows leg to the Health Check matrix - #473

Open
npapagna wants to merge 1 commit into
mainfrom
npapagna/windows-health-check
Open

Add a Windows leg to the Health Check matrix#473
npapagna wants to merge 1 commit into
mainfrom
npapagna/windows-health-check

Conversation

@npapagna

@npapagna npapagna commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Adds a windows-latest leg to the health-check job matrix, alongside the existing ubuntu-latest one, so the GemStone integration suite also runs against the native Windows GCI client.
  • Windows has no native GemStone server build, so the new leg provisions WSL via a new composite action (setup-gemstone-in-windows), installs and starts the server inside the guest, downloads the native Windows GCI client, and points the native Windows test run at the WSL-hosted server remotely.
  • gs-create-test-env-file.sh gains --remote, --gci-library-path, and --global-dir so the same script can write a .env.test that's reachable across that WSL/native-Windows boundary; gs-test-setup.sh just forwards extra args through to it.
  • The server download cache is keyed on gemstone-server-download-linux-<version> (no runner.os), since the Windows leg's server install also runs as Linux under WSL and can share the same cached archive; a future macOS leg would need its own key, since gs-config.sh resolves a different archive there.
  • The job's timeout-minutes is scoped per platform (5 for Linux, 10 for the Windows leg's added WSL/GCI-download overhead) instead of raised for everyone, so a Linux-side regression that doubles runtime still trips the guard.

Test plan

  • npm run lint && npm run format:check && npm run compile && npm test locally
  • CI matrix green on both ubuntu-latest and windows-latest legs across the GemStone version matrix
  • Windows leg's WSL setup, GCI client download, and remote .env.test connection succeed end-to-end in CI

🤖 Generated with Claude Code

@npapagna
npapagna force-pushed the npapagna/windows-health-check branch from 9a5ecbc to 21fbf76 Compare August 21, 2026 11:50
@npapagna
npapagna marked this pull request as ready for review August 21, 2026 12:18
Comment thread .github/workflows/health-check.yml Outdated
Comment thread .github/workflows/health-check.yml Outdated
Comment thread client/src/__tests__/rowanLoad.test.ts
Comment thread client/bin/gs-test-setup-wsl.sh Outdated
Comment thread client/bin/gs-info.py Outdated
Comment thread client/bin/gs-info.py
Comment thread client/bin/gs-create-test-env-file.sh Outdated
@npapagna
npapagna force-pushed the npapagna/windows-health-check branch from e887eaa to 14ba975 Compare August 21, 2026 20:30
Until now health-check.yml only ran the GemStone integration suite on
Linux, so a regression that only showed up under Windows/WSL or the
native Windows GCI client shipped invisibly. windows-latest has no
GemStone server build at all, so the new leg installs and starts the
server inside a WSL guest and points the native Windows test run at
it remotely, over a NRS the WSL guest's own name/localhost resolution
can't reach from outside.

Setup for that leg lives in a new composite action,
setup-gemstone-in-windows, which provisions WSL, downloads the native
Windows GCI client (gs-download-windows-gci-client.ps1), and installs
and starts GemStone inside the guest (gs-test-setup-wsl.sh). The
server archive download is cached under one shared, Linux-tagged key
across both platforms, since the Windows leg's server install also
runs as Linux under WSL; a future macOS leg would need its own key,
since gs-config.sh resolves a different archive there.

gs-create-test-env-file.sh gains --remote (write a stone/gem NRS
reachable from outside the machine, via the new gs-info.py) and
--gci-library-path/--global-dir (override the native paths it would
otherwise compute), so the same script still produces the right
.env.test whether the test runner is local or crossing into WSL from
native Windows. gs-test-setup.sh forwards any extra arguments through
to it unchanged.

The job's timeout-minutes is scoped per platform (5 for Linux, 10 for
the new Windows leg's added WSL/GCI-download overhead) instead of
raised for everyone, so a Linux-side regression that doubles runtime
still trips the guard.

Also bumps two rowanLoad tests' timeouts (10s/20s) to absorb the
slower git/filesystem operations WSL adds on the new leg.
@npapagna
npapagna force-pushed the npapagna/windows-health-check branch from 14ba975 to be4e141 Compare August 21, 2026 20:40
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.

2 participants