Repository navigation
Implement v2.3.0 release reliability and bundle fixes - #7
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stalled Central uploads and response bodies can block releases indefinitely, while stale metadata, filename-derived entries and incomplete signatures can produce invalid bundles. This implements the reviewed v2.3.0 fixes:
Verification: full builds passed with TestKit Gradle 8.13 and 9.4.0 on JDK 17; timeout, Central API/TestKit, compatibility and metadata suites passed on both versions with JDK 21. Actual daemon JVM/Gradle versions are asserted and recorded. Mechanism A passed the timeout/cancellation proof in all four cells, including draining a stalled upload until EOF/reset within 5 s. The final full suite passed 99 normal tests plus the dedicated non-UTF-8 test. Baseline stalled-body/upload/trickle, charset and publishing-order regressions were confirmed. All three phase commits compile independently.
Relocation option used: whole
testtask restoration succeeded for the policy-test selection in two isolated checkouts despite different absolute TestKit metadata paths. No runtime-classpath normalization was added. Changing only the policy script re-executed the tests; a separate minimal fixture also proved the provider input is path-insensitive and content-sensitive.Scope/cost:
releaseAlluses default CentralPortalClient deadlines; its separate PublicationStatus and HEAD availability checks remain unchanged. Cleanup affects all publishing builds of the selected publication and can re-sign every artifact/prompt through pinentry. Metadata generation is not cacheable by default on either tested Gradle version, so the observed result is regeneration, not FROM_CACHE. These limits are documented.Detailed commands, runtime versions, baseline outcomes and cache fingerprints: verification record. No real Portal upload was performed because no throwaway version/verified namespace was allocated; merging, the publishing smoke test and tagging remain release-owner steps.
CI for the preceding implementation commit passed: full build and all four Gradle/JDK cells. The run retains build reports and a runtime-proof report artifact for each matrix cell.
CI retained 101 passing build tests and 37 passing tests per matrix cell. Actual test JVMs were JDK 17.0.20.1+1 and 21.0.12.1+1-LTS; TestKit asserted the corresponding daemon major versions and selected Gradle versions.
Follow-up review fixes: all items 2–8 addressed, including dead-code removal and deadline + 5 s scheduling slack in caller timing tests. The final local full build passed 106 normal tests plus the charset test, with no failures/skips and configuration-cache reuse. New regression tests cover packaging compatibility, pending/validating messages, timeout classification, subsection case and lazy Bash probing.
Review-fix CI passed the full build and all four Gradle/JDK cells: https://github.com/Alipsa/nexus-release-plugin/actions/runs/38084312155 (38 tests per matrix cell).
Ordinary-publishing regression: metadata dependencies now fall back to an empty list when
mavenPublicationis unset. BothpublishandpublishToMavenLocalwere confirmed to fail before the fix and pass afterward on Gradle 8.13, including strict configuration-cache reuse and parallel execution. Cleanup is never scheduled, metadata/signature bytes remain unchanged, signing stays up to date, andbundlestill reports a missing selection. The final local full build passed 108 normal tests plus the charset test, zero failures/skips. Both new cases run in every CI matrix cell.Latest CI for commit 20c1052 passed the full build and all four runtime cells: https://github.com/Alipsa/nexus-release-plugin/actions/runs/38084878236. Each matrix cell ran 40 tests with zero failures/skips; reports retain the asserted daemon JVM versions.