Skip to content

Improve Maven Central publishing resilience and debugging - #135

Merged
bernardladenthin merged 6 commits into
mainfrom
claude/build-timeout-config-nzli8l
Jul 8, 2026
Merged

Improve Maven Central publishing resilience and debugging#135
bernardladenthin merged 6 commits into
mainfrom
claude/build-timeout-config-nzli8l

Conversation

@bernardladenthin

Copy link
Copy Markdown
Owner

Summary

  • Add debug step to log effective POM with release profile, making Central publishing configuration (waitUntil, waitMaxTime) visible for troubleshooting
  • Change Central publish-poll strategy from waitUntil=published to waitUntil=validated with extended timeout (6 hours), avoiding slow server-side publish waits while still catching validation errors
  • Allow artifact collection and GitHub release/snapshot jobs to run even when Maven deploy fails, since Central publish-poll timeouts can occur after successful bundle upload; this prevents loss of signed artifacts in those cases
  • Upgrade pitest-maven from 1.25.5 to 1.25.6

Test plan

  • CI is green on this branch
  • Existing snapshot and release publishing workflows will exercise the updated conditions and new debug step
  • The !cancelled() conditions ensure artifact collection and downstream jobs run on both success and failure (but not cancellation), preserving signed artifacts even when Central polling times out

Related issues / PRs

Checklist

  • I have read CONTRIBUTING.md and CODE_OF_CONDUCT.md
  • My commits follow Conventional Commits
  • No security-sensitive changes

https://claude.ai/code/session_018e3Pk8a2yzmrmNb2DEw9JS

claude added 6 commits July 7, 2026 12:06
The central-publishing-maven-plugin polls the Central Portal for the
'published' deployment state (waitUntil=published) with a default
waitMaxTime of 1800 seconds. The java-llama.cpp 5.0.6 release deploy hit
that 30-minute limit on a slow Central day ('Polling for <id> timed out
before the deployment completed') even though the bundle had uploaded
successfully and published server-side. Set waitMaxTime=21600 (6 h) so
the fail-loud 'published' gate survives slow portal processing, and add
an informational 'Show effective POM (debug)' step before each deploy so
the resolved publishing configuration is visible in the job log.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018e3Pk8a2yzmrmNb2DEw9JS
A Central publish-poll timeout (seen on the jllama 5.0.6 release) reds
the publish job after the bundle was already uploaded and published
server-side, but two layers then dropped the GitHub release assets:
the github-snapshot/github-release jobs required publish success, and
the 'Collect signed artifacts' + upload steps inside the publish job
ran after the deploy step and were skipped on its failure — even though
the signed jars + .asc files already exist (GPG signing happens at
verify, before the final Central wait).

Fix: run collect/upload with 'if: ${{ !cancelled() }}', and let the
GitHub jobs run on publish success OR failure (never on skipped or
cancelled, so the publish_to_central manual gate still holds). If a
deploy fails before signing, collect finds nothing, no artifact is
uploaded, and the GitHub job fails loud on download-artifact.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018e3Pk8a2yzmrmNb2DEw9JS
Portal validation is where real deployment errors surface (bad
signatures, missing javadoc, POM rules) and completes within minutes;
the publish/replication step then runs server-side via autoPublish and,
after a passed validation, effectively only stalls on portal slowness -
the exact false-alarm that timed out the jllama 5.0.6 release job while
the deployment published fine. waitUntil=validated keeps the fail-loud
gate for genuine errors without the multi-hour wait; waitMaxTime=21600
stays as headroom for the validation poll. (uploaded was rejected: it
would leave the job green on a validation failure.)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018e3Pk8a2yzmrmNb2DEw9JS
PIT gate re-run green on 1.25.6 (565/565 mutations killed, 100%).

The checker-qual dependencyManagement pin fixes a pre-existing build
break unrelated to the pitest bump: this pom's checker-qual moved to
4.2.1 while net.ladenthin:llama 5.0.4 (deliberately kept at 5.0.4)
transitively brings 4.2.0, failing the enforcer's DependencyConvergence
rule on every build. Same convergence pattern as the existing slf4j-api
entry.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018e3Pk8a2yzmrmNb2DEw9JS
…parately)

The DependencyConvergence break (own checker-qual 4.2.1 vs llama
5.0.4's transitive 4.2.0) is left in place on purpose; it will be
resolved by the llama dependency bump in a separate session. The
pitest 1.25.6 bump from the previous commit stands; its 565/565 PIT
verification ran with the (now-reverted) pin in place.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018e3Pk8a2yzmrmNb2DEw9JS
Replaces the multi-line, incident-specific comment with one generic
line explaining why validated (not published) is used; no repo-specific
references.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018e3Pk8a2yzmrmNb2DEw9JS
@bernardladenthin
bernardladenthin merged commit 418d1bc into main Jul 8, 2026
8 of 12 checks passed
@bernardladenthin
bernardladenthin deleted the claude/build-timeout-config-nzli8l branch July 8, 2026 13:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants