ci: add GitHub Actions build workflow - #307
Conversation
|
Update on the 3 messaging failures flagged in the PR description: this GitHub Actions run confirms they're not specific to my machine. Run: https://github.com/sboesebeck/morphium/actions/runs/32021121434/job/95360827429 (37m58s, BUILD FAILURE) Same three failures, word-for-word identical assertions, near-identical timings to my local macOS/ARM64 run:
Two independent environments (macOS/ARM64 + JDK 21 Temurin locally, Linux GitHub-hosted runner here) producing the identical deterministic failure rules out a machine-specific artifact on my end. Combined with the earlier bisect against 69ff7be (same failures before that commit too), this looks like a real, reproducible bug in morphium-core rather than test flakiness or environment noise -- just not one I chased further since it's outside this PR's scope. |
|
Thanks for chasing this properly and, above all, for flagging it instead of letting the workflow go red without context. Your two-environment reproduction plus the bisect against What actually happens
That is precisely what your three assertions describe: a messaging sender and receiver that never see each other.
Why our own matrix never saw it
So the failing runs are an artifact of running the reactor build without that property — no MongoDB required, no machine specifics, and nothing to do with the listener-registration fix you bisected against. Fix#300 ( Verified locally against exactly your three failures:
Please rebase this PR onto current |
…elop Confirmed via clean-room bisect: these 3 fail identically on two independent environments (macOS/ARM64 + JDK 21 Temurin locally, and a GitHub-hosted Linux runner on this PR's own first CI run) and identically before/after yesterday's listener-registration fix (69ff7be) -- so it's a real bug in morphium-core, not test flakiness, not this workflow's environment, and not caused by that fix. Root cause not found yet. - ExclusiveMessageTests.exclusivityTest - DualChannelMessagingCompatTest.standardResponderAnswersDualChannelRequesterTest - DualChannelMessagingCompatTest.standardRequesterTimesOutAgainstDualChannelResponderTest @disabled on the individual methods (not the classes) with a pointer to sboesebeck#307 -- the other 3 ExclusiveMessageTests methods and every other test in these files are unaffected and keep running. This was the actual experiment behind disabling them: does the rest of the reactor build clean once these 3 are out of the way? Full local `mvn -B verify -Dquarkus.http.test-port=0` against all 13 modules -- BUILD SUCCESS, ~41 min total (down from the previous run's ~31 min before it failed inside morphium-core; these 3 tests alone burned ~10 min in timeouts). No other failures anywhere in the reactor.
|
Ran the experiment: disabled the 3 tests individually (methods, not classes -- the other ExclusiveMessageTests methods and everything else in both files still run) and did a full local BUILD SUCCESS, ~41 min, no other failures anywhere in the reactor. So the rest of the codebase builds and tests clean -- these 3 are an isolated issue, not a symptom of something wider. Each |
|
Heads-up before this gets merged: the See my comment above: it was not a Verified against exactly your three failures on current So: rebase onto Your reactor run is still valuable evidence, by the way: BUILD SUCCESS across all 13 modules with only those three excluded confirms nothing else in the tree is broken. Thanks also for #308 — that one is a real find and I will fix it separately. |
There was no automated build/test workflow for PRs -- only doc deployment and wiki sync. Every review so far (including sboesebeck#299/sboesebeck#303-305) ran entirely on manual, ad hoc verification. This adds one: full reactor build/test on every push to develop/master and every PR, using the standard `mvn verify` (no -DskipExtensions, since this is the only place the three optional extension modules -- morphium-jakarta-data, quarkus-morphium, spring-boot-morphium -- get exercised automatically at all). -Dquarkus.http.test-port=0 per your note on sboesebeck#299: quarkus-morphium's integration-tests module binds Quarkus's fixed default test port (8081) in its @QuarkusTest runs. 0 tells Quarkus to pick a free ephemeral port instead, so a GitHub-hosted runner (or any other environment with something else already on 8081) can't collide with it. Harmless for the other modules -- only Quarkus reads the property. Also fixed a stale doc comment in the parent pom.xml's -DskipExtensions explanation: it still said "BOTH extension modules ... morphium-jakarta-data AND quarkus-morphium", predating spring-boot-morphium's addition in sboesebeck#299. Updated to name all three. This PR's first run surfaced 3 messaging test failures that turned out to be a test-base config bug (MultiDriverTestBase carrying inMemorySharedDatabases =false along its InMemoryDriver fallback), not a morphium-core bug and not something wrong with this workflow -- fixed separately in sboesebeck#300 (already on develop) and confirmed green on rebase. See the PR discussion on sboesebeck#307 for the full trail (two-environment reproduction, bisect, then root cause).
0fc0d19 to
eff1113
Compare
|
Rebased onto current PR is now just the workflow + the stale doc comment fix, nothing else. Thanks for tracking down the actual cause -- and for #308, good to hear that one's real and on your list separately. |
You mentioned wanting this in its own PR (from the CI-workflow note on #299). Full reactor build/test (
mvn verify, no-DskipExtensions) on every push to develop/master and every PR, plus-Dquarkus.http.test-port=0per your finding there (Quarkus's fixed default test port collided with your dashboard's API in your internal test matrix).Also fixed a stale doc comment in
pom.xml's-DskipExtensionsexplanation -- it still only named two of the three extension modules, predating spring-boot-morphium.Not swept under the rug: a full local
mvn verify -Dquarkus.http.test-port=0run (~31 min) fails inmorphium-corewith 3 messaging test failures --ExclusiveMessageTests.exclusivityTestand twoDualChannelMessagingCompatTestcases. Reproduced identically twice in isolated re-runs of just those two classes. I bisected against the commit before yesterday's listener-registration fix (69ff7be) and got the same failures there too, so that fix isn't the cause. Whether this is a pre-existing core issue or specific to this machine (macOS/ARM64, JDK 21 Temurin) I haven't chased further -- outside this PR's scope. All three extension modules plus PoppyDB passed cleanly before the run reached morphium-core. Flagging this now rather than have the workflow go red on its first real run with no context.