54 lines
2.8 KiB
Markdown
54 lines
2.8 KiB
Markdown
# Whole-solution CI
|
|
|
|
The `v2-ci` workflow restores, builds and tests in one job so the test step uses
|
|
that job's Release binaries. Restore disables parallel package work; restore and
|
|
build use at most two MSBuild workers. Testing uses one MSBuild worker, disables
|
|
parallel target-framework runs and loads `ci.runsettings`: one VSTest process and
|
|
two xUnit collection workers with conservative scheduling. Assemblies that disable
|
|
parallelization keep that setting.
|
|
|
|
The workflow retains the E2E/LiveIntegration exclusions, includes SlowUnit, keeps
|
|
Akka's test time factor at three, and requires at least 12,000 executed tests.
|
|
Runner capacity and TRX files remain available for diagnosing failures. These
|
|
limits reduce contention; they do not prove every timing failure has one cause.
|
|
There are no automatic test retries or changed assertion deadlines.
|
|
|
|
Gitea 1.26 supports the repository-wide `lmxopcua-v2-ci` concurrency group. Only
|
|
one run is active; an active run is not cancelled, but a newer pending run may
|
|
supersede an older pending run. The group does not serialize other repositories
|
|
using the same host.
|
|
|
|
To reproduce the bounded test leg after restore and Release build:
|
|
|
|
```bash
|
|
AKKA_TEST_TIMEFACTOR=3 dotnet test ZB.MOM.WW.OtOpcUa.slnx \
|
|
--configuration Release --no-build -m:1 -p:TestTfmsInParallel=false \
|
|
--settings scripts/ci/ci.runsettings \
|
|
--filter "Category!=E2E&Category!=LiveIntegration" \
|
|
--logger trx --results-directory artifacts/trx
|
|
MIN_EXECUTED=12000 bash scripts/ci/assert-not-all-skipped.sh artifacts/trx/*.trx
|
|
```
|
|
|
|
The guard uses the existing TRX `Counters/@executed` value for the aggregate
|
|
floor. Its `skipped` diagnostic counts individual `Results/UnitTestResult`
|
|
records whose outcome is `NotExecuted`, using the document's XML namespace.
|
|
Some VSTest reports set summary `notExecuted` to zero even when these records
|
|
are present. Skip records are counted per file, including repeated runs; they
|
|
are not a count of unique test methods and do not affect the executed floor.
|
|
For malformed XML, the diagnostic retains the old summary-counter fallback;
|
|
this guard does not add XML validation to its existing gate policy.
|
|
|
|
Run the deterministic script fixtures without building or running the solution:
|
|
|
|
```bash
|
|
python3 scripts/ci/test-assert-not-all-skipped.py
|
|
```
|
|
|
|
Verified hosted baseline: [Gitea run 975](https://gitea.dohertylan.com/dohertj2/lmxopcua/actions/runs/975)
|
|
completed successfully on 2026-10-13 for commit
|
|
`76bdca90e94e814e06ef10b78271e2b492b2ba32` (merged by PR #711).
|
|
Restore, Release build, README drift check, the serialized whole-solution test
|
|
step, the 12,000-test floor and TRX upload all passed. The floor counted
|
|
14,630 executed tests across 62 TRX files. This baseline predates the individual
|
|
skip-reporting correction; its printed zero skip diagnostic is not skip evidence.
|