Skip to content

Harden the CI workflow - #73

Merged
danielchalmers merged 1 commit into
mainfrom
production-fixes-and-ci
Aug 1, 2026
Merged

Harden the CI workflow#73
danielchalmers merged 1 commit into
mainfrom
production-fixes-and-ci

Conversation

@danielchalmers

@danielchalmers danielchalmers commented Aug 1, 2026

Copy link
Copy Markdown
Owner

CI-only follow-up to #72. No production or test code changes.

Change Why
Build and test in Release Three #if DEBUG blocks in shipped code (log level, the update check, drive scanning) mean a green Debug run said nothing about the binaries users actually get
--blame-hang --blame-hang-timeout 5m The suite's polling helpers have deadlines, but a Dispatcher.Invoke that never returns isn't polled. Today a deadlock regression burns a 6-hour Windows runner instead of failing in minutes with the offending test named
Upload the trx on failure A red build currently leaves only raw scrollback. Given its own step with an explicit name so it doesn't collide with the unnamed publish artifact, which keeps if-no-files-found: error
dotnet format --verify-no-changes gate AGENTS.md mandates it, nothing enforced it, and commit 35c75d8 "Apply dotnet format" shows the rule gets missed. Placed after Build so a compile error is reported first. Passes clean today, so it's a zero-fix ratchet
WiX install moved after Test Build, format, and test failures now short-circuit ahead of the tool install. setup-dotnet keeps ~/.dotnet/tools on PATH for the whole job, and deploy.yml uses the same composite action so it benefits identically
concurrency + workflow_dispatch Cancel superseded runs. Safe here specifically because build.yml's artifacts are never consumed — releases come from the tag-triggered deploy.yml, which builds its own

Also writes down two conventions that were being followed but never documented: the Subject_Scenario_Expectation test naming, and the comment style (one sentence per line, no em dashes).

Left out deliberately: -warnaserror. The workflow pins a floating dotnet-version: 10.0.x, so an SDK patch that tightens a warning would break every open PR at once, with the fix needing to land before anything else can merge. The build is at zero warnings today if you want it later.

Verified locally: dotnet build -c Release and dotnet test -c Release clean at 365 tests, dotnet format --verify-no-changes exits 0, and the app launches and scans 177 real clips with no errors logged.

Base automatically changed from test-suite-improvements to main August 1, 2026 21:54
@danielchalmers
danielchalmers force-pushed the production-fixes-and-ci branch from 727fe0a to a485078 Compare August 1, 2026 22:05
@danielchalmers danielchalmers changed the title Fix three bugs the test review found, and harden CI Harden the CI workflow Aug 1, 2026
- Build and test in Release.
  There are three #if DEBUG blocks in shipped code (log level, the update check, drive scanning), so a green Debug run said nothing about the binaries users actually get.
- Add --blame-hang with a 5m inactivity timeout.
  The suite's polling helpers have deadlines, but a Dispatcher.Invoke that never returns is not polled, and today a deadlock regression burns a 6-hour Windows runner instead of failing with the offending test named.
- Upload the trx on failure so a red build leaves more than raw scrollback.
- Gate on dotnet format.
  AGENTS.md mandates it but nothing enforced it, and it caught real drift while the test-suite work was in progress.
- Install WiX after the test step so build, format, and test failures short-circuit ahead of the tool install.
- Add a concurrency group and workflow_dispatch to the workflow.
  Cancelling in-progress main runs is safe here because build.yml's artifacts are never consumed; releases come from the tag-triggered deploy.yml, which builds its own.

Also documents the test naming and comment conventions in AGENTS.md, neither of which was written down.

Left out deliberately: -warnaserror.
The workflow pins a floating dotnet-version (10.0.x), so an SDK patch that tightens a warning would break every open PR at once.
@danielchalmers
danielchalmers force-pushed the production-fixes-and-ci branch from a485078 to 54713e9 Compare August 1, 2026 22:09
@danielchalmers
danielchalmers merged commit 5f9a7d5 into main Aug 1, 2026
1 check passed
@danielchalmers
danielchalmers deleted the production-fixes-and-ci branch August 1, 2026 22:13
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