Repository navigation
ci: check Linux and Windows installs on push to main - #80
Merged
Merged
Conversation
Neither installer had automated evidence on its target host. Each job writes one synthetic content-free session, installs the backend, checks the service, /health (ready, at least one indexed session, no adapter failures) and /menubar, then uninstalls and confirms nothing is left serving. Tray companions need a desktop session hosted runners do not reliably provide, so they are out of scope. Co-Authored-By: Claude Code <noreply@anthropic.com>
…ndows checkouts The first CI run on real hosts found two installer bugs: - Linux uninstall passed both units to one `systemctl disable --now`; systemd refuses the whole command when a unit file is missing, which every backend-only install hits, so the server kept running after its unit was deleted. Each unit is now stopped on its own. - The Windows installer aborted on a detached HEAD or a branch without an upstream: Windows PowerShell 5.1 turns git's stderr into a terminating error under ErrorActionPreference=Stop even when redirected. Git probes now go through Get-GitText, which tolerates that and returns "". Install checks now also run on every pull request to main. Co-Authored-By: Claude Code <noreply@anthropic.com>
update-windows.ps1 had the same bare git probes as the installer. On a detached HEAD or a branch without an upstream, Windows PowerShell 5.1 turned git's redirected stderr into a terminating error, so the helper aborted instead of recording upstream_unavailable or inspect_failed for the dashboard. Its probes now use the same Get-GitText helper. Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
Review found two more Windows PowerShell 5.1 abort paths: the dirty-tree `git status` probe and the Git delivery bootstrap's Python call, both of which redirected stderr outside the helper. Get-GitText now wraps a general Invoke-NativeText, and both calls use it. The contract test rejects any git or Python call with discarded stderr outside the helper. CI: wait for inventory_ready before counting indexed sessions, finish every run on main (cancel only superseded pull-request runs), and pin actions to the commits of the tested v4/v5 tags. Co-Authored-By: Claude Code <noreply@anthropic.com>
The contract only caught single-line git or Python probes, so a multi-line `& $PythonExe ... 2>$null` slipped through. It now removes the helper and the two try/catch-guarded Python discovery probes, then rejects any other `2>$null`. CI concurrency keys push runs by commit so every main commit is checked to completion, as the comment promises. Co-Authored-By: Claude Code <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.github/workflows/install-checks.yml, which runs on every push tomain, on every pull request tomain, and on manual dispatch.ubuntu-latest): starts a systemd user manager (loginctl enable-linger, CI environment setup only), installs with./scripts/install --backend-only, checkstoken-meter-server.service,INSTALL_MODE,/healthand/menubar, then runs the installeduninstall-systemd-userand confirms the service and port are gone.windows-latest): installs withscripts\install-windows.ps1 -BackendOnly, checks/health,/menubar,INSTALL_MODEand the login Run entry, then runs the installeduninstall-windows.ps1and confirms the Run entry and port are gone..github/scripts/write_sample_trace.py), so/healthmust report at least one indexed session and no runtime-adapter failures. Server logs print on failure.Installer bugs found by the first run
uninstall-systemd-userpassed both units to onesystemctl --user disable --now. systemd rejects the whole command when any unit file is missing, which every backend-only install hits (no tray unit), and|| truehid that. The server unit file was then deleted while the server kept running. Each unit is now stopped on its own.git checkout <sha>) and on branches without an upstream. Windows PowerShell 5.1 turns a native command's stderr into a terminating error underErrorActionPreference=Stop, even when redirected with2>$null. Git probes now go throughGet-GitText, which tolerates that and returns an empty string, which is what the script already expected.update-windows.ps1had the same probes; they now use the same helper, so the updater recordsupstream_unavailableorinspect_failedfor the dashboard instead of aborting.Not covered
Test plan
main's scripts)🤖 Generated with Claude Code