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
@@ -204,13 +248,17 @@ Use: `gh issue close <N> --repo RajwanYair/RegiLattice --comment "CI now green a
204
248
## CI Best Practices
205
249
206
250
-**NuGet cache**: key on `.csproj` hash to invalidate on dependency changes
207
-
-**Build once, test from build**: use`--no-build`in test step after `dotnet build`
251
+
-**Build once, test without `--no-build`**: omit`--no-build`to let each test step do a fast incremental build — safer than relying on a prior Build step to produce all DLLs, especially for GUI.Tests which requires Windows SDK runtime packs
208
252
-**Per-project test runs — MANDATORY**: NEVER use `dotnet test RegiLattice.sln`. Always run each
209
253
test project individually (Core → CLI → GUI). `dotnet test RegiLattice.sln` spawns Core.Tests and
210
254
GUI.Tests concurrently as separate processes, both writing to the same `compliance-history.json`
211
255
file, causing non-deterministic failures. See `tests/.runsettings` MaxCpuCount note.
212
-
-**Codecov**: use `codecov-action@v5`; set `fail_ci_if_error: false`
256
+
-**`MSBUILDDISABLENODEREUSE: 1`**: Set at job level in every CI job — prevents MSBuild worker nodes from holding file locks across builds on the OneDrive-hosted workspace (MSB3492)
257
+
-**`FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true`**: Set at job level — ensures JS-based actions (checkout, cache, codecov) run on Node 24 without deprecation warnings
258
+
-**`paths-ignore` for docs-only changes**: Add to `on.push` to avoid a full build/test run when only `.md`, `.svg`, `.txt`, or instruction files changed
259
+
-**Codecov**: use `codecov-action@v6`; set `fail_ci_if_error: false`
213
260
-**Windows-only**: no matrix needed — single `windows-latest` runner
-**Stryker mutation testing**: runs from `src/RegiLattice.Core/` directory with `STRYKER_BUILD=1`; explicit `<TargetFramework>` required in Core and Core.Tests .csproj files for Buildalyzer compatibility
262
+
-**Stryker mutation testing**: runs from `src/RegiLattice.Core/` directory with `STRYKER_BUILD=1`; explicit `<TargetFramework>` required in Core and Core.Tests .csproj files for Buildalyzer compatibility; move to **weekly schedule** (cron) to avoid adding ~15 min per push
216
263
-**`dotnet build` verbosity**: NEVER use `-q`/`--verbosity quiet` — causes question-build aborts; use no flag or `--verbosity minimal`
264
+
-**Action version verification**: verify every action version exists before committing — a non-existent tag silently fails the step
0 commit comments