CI: stand up Gitea Actions (TST-03) + fix the defects it caught (#123)
ci / windows (push) Failing after 13m38s
ci / java (push) Successful in 2m4s
ci / portable (push) Successful in 9m18s
ci / live-mxaccess (push) Has been cancelled

Make the authored CI pipeline execute and go green on the co-located runner (portable + java), fix the five real latent defects the first real run surfaced (codegen-check null, stale rust proto, orphan-terminator Linux path, stale java worker codegen, py3.12 event loop), provision pwsh + Gradle for the self-hosted act image, and disable the Windows jobs (act host-mode broken). TST-03 -> Done.

https://claude.ai/code/session_01DMXXvNuPekkkrTEyPNxEkW
This commit was merged in pull request #123.
This commit is contained in:
2026-07-10 05:11:01 -04:00
parent 69ea7937ca
commit d6c2ca33f1
7 changed files with 274 additions and 66 deletions
@@ -13,7 +13,19 @@ namespace ZB.MOM.WW.MxGateway.Tests.Gateway.Workers;
/// </summary>
public sealed class OrphanWorkerTerminatorTests
{
private const string WorkerExecutablePath = @"C:\app\src\ZB.MOM.WW.MxGateway.Worker\bin\x86\Release\ZB.MOM.WW.MxGateway.Worker.exe";
// An OS-appropriate, already-normalized absolute path so Path.GetFullPath (used by the
// terminator to resolve the configured path) is idempotent and the exact-match compare holds
// on every platform. A hard-coded Windows literal (C:\...) is not rooted on Linux, so
// Path.GetFullPath there prepends the cwd and the match fails — the terminator is a
// Windows-only feature in production, but its matching logic must still be testable on the
// Linux CI runner.
private static readonly string WorkerExecutablePath = Path.GetFullPath(Path.Combine(
Path.GetTempPath(),
"MxGatewayOrphanTests",
"bin",
"x86",
"Release",
"ZB.MOM.WW.MxGateway.Worker.exe"));
/// <summary>Verifies that orphan worker processes matching the configured executable path are killed.</summary>
[Fact]
@@ -59,7 +71,10 @@ public sealed class OrphanWorkerTerminatorTests
// not our worker and must be left alone.
FakeProcessInspector inspector = new(
[
new RunningProcessInfo(301, @"C:\other\place\ZB.MOM.WW.MxGateway.Worker.exe"),
new RunningProcessInfo(301, Path.GetFullPath(Path.Combine(
Path.GetTempPath(),
"MxGatewayOrphanTests-other",
"ZB.MOM.WW.MxGateway.Worker.exe"))),
]);
OrphanWorkerTerminator terminator = CreateTerminator(inspector);