Skip to content

Improve Groovy Joint Validation Build CI stability#15484

Merged
jdaugherty merged 1 commit into7.0.xfrom
fix/groovy-joint-ci-stability
Mar 4, 2026
Merged

Improve Groovy Joint Validation Build CI stability#15484
jdaugherty merged 1 commit into7.0.xfrom
fix/groovy-joint-ci-stability

Conversation

@jamesfredley
Copy link
Contributor

@jamesfredley jamesfredley commented Mar 3, 2026

Summary

  • Add --continue so a single flaky test failure does not abort the entire ~45-minute Groovy Joint build (the job still fails at the end - it just reports all failures in one run)
  • Add --stacktrace for better failure diagnostics (matching the main CI workflow)
  • Reduce maxTestParallel from 4 to 3 to lower memory pressure on CI runners

Problem

Analysis of the last 80 Groovy Joint Validation Build runs shows 16 failures (20% failure rate) with these recurring patterns:

Failure Occurrences Status
AsyncPromiseSpec > async service processes string input (ReadTimeoutException) 2 Fixed in #15481
UserControllerSpec > User list (scaffolding Geb flaky login) 2 Fixed in #15480
DefaultServiceRegistrySpec (ServiceConfigurationError) 1+ Fixed in #15474
Gradle Test Executor JVM crash (all tests passed, non-zero exit) 1 Addressed here
WhereQueryOldIssueVerificationSpec (flaky hibernate5 test) 2 Pre-existing
MicronautErsatzRoundtripSpec (flaky Ersatz mock) 1 Pre-existing
Branch-specific failures (compile errors, test regressions) 7 N/A

The Groovy Joint workflow is uniquely vulnerable because it runs all tests (unit + integration + functional + MongoDB) in a single job. Without --continue, one flaky test kills the entire build. The JVM crash occurred because 4 parallel test forks (each 768m) + Gradle daemon (5G) + MongoDB container exceeds the ~7GB runner memory.

Changes

groovy-joint-workflow.yml:

  • --continue: Lets the build finish and report all failures instead of aborting on the first one. The job still exits non-zero so CI stays red.
  • --stacktrace: Provides full stack traces on failure (the main CI workflow already uses this)
  • -PmaxTestParallel=3: Reduces parallel test forks from 4 to 3, cutting test JVM memory usage from ~3GB to ~2.3GB. This gives more headroom for the Gradle daemon and MongoDB container on the ~7GB GitHub runner.

Add --continue so a single flaky test failure does not abort the entire
45-minute build. Add --stacktrace for better failure diagnostics (matching
the main CI workflow). Reduce maxTestParallel from 4 to 2 to lower memory
pressure - the joint build runs all tests (unit, integration, functional,
MongoDB) in a single job alongside the Gradle daemon (5G) and MongoDB
container on a 7GB runner.

Assisted-by: Claude Code <Claude@Claude.ai>
@jamesfredley jamesfredley force-pushed the fix/groovy-joint-ci-stability branch from 47fbfb5 to 7ea2132 Compare March 3, 2026 17:39
@jamesfredley jamesfredley self-assigned this Mar 3, 2026
@jamesfredley jamesfredley marked this pull request as ready for review March 3, 2026 17:41
Copilot AI review requested due to automatic review settings March 3, 2026 17:41
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves the stability and debuggability of the Groovy Joint Validation Build CI workflow by adjusting Gradle invocation flags to better tolerate flaky tests and reduce resource pressure on GitHub-hosted runners.

Changes:

  • Add Gradle --continue so the job reports all failures in one run instead of aborting on the first failure.
  • Add Gradle --stacktrace to improve failure diagnostics.
  • Reduce test parallelism via -PmaxTestParallel=3 to lower memory pressure.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@jdaugherty jdaugherty merged commit d46b5f6 into 7.0.x Mar 4, 2026
36 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants