cloudfoundry / cloudfoundry/java-buildpack
v5.1.0 GA release plan
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 452
- Forks
- 2.5k
- Avg merge
- 14h 57m
- Merged PRs (30d)
- 23
Description
Background
Per RFC-0050 (Java Buildpack Migration to Golang):
v5.0.x- Experimental release intended to get broad feedback by users, incompatible changes may happen
v5.1.0- First non-experimental GA release
This issue tracks the doc/messaging work needed to formally mark v5.1.0 as GA, plus a deferred docs.cloudfoundry.org refresh section for later follow-up.
Version bump
To go to next minor VERSION a file edit is needed for this GA transition, from 5.0.x to 5.1.0.
Note: patch version bumping is owned by the external Concourse java-buildpack/cf-release pipelines (see cloudfoundry/buildpacks-ci release guide, docs/cf-release-buildpack-guide.md).
Changes since v5.0.0 — verified, with a caveat
Scanned git log v5.0.0..HEAD (336 commits): no new intentionally-breaking API/config changes were introduced (no removed frameworks, no default-value flips beyond what v5.0.0 already announced).
However, there are many bug-fix commits since v5.0.0 that changed previously-buggy/inconsistent runtime behavior. These are fixes "for the better" (bring behavior in line with intent), but are still observable behavior changes some upgrading apps could notice. Notable examples:
- Fix
JBP_CONFIG_JAVA_MAINnot taking effect when app is detected as Spring Boot — silently-ignored config now applies - Fix
SERVER_PORT/$PORTinjection for Spring Boot JAR, Spring Boot CLI, and generic profile.d scripts (previously not shell-expanded correctly) - Fix
LoadConfigreading the wrongJBP_CONFIG_*_JREvendor prefix — configs could previously silently apply to the wrong JRE vendor - Restrict
-XX:ActiveProcessorCountto HotSpot JREs only (previously applied incorrectly to non-HotSpot JREs like IBM/OpenJ9) - Tomcat
allowSchemeMismatch=truechange forserver.xml - Multiple Tomcat context_path/
ROOT.xml/WAR-filename XML-escaping fixes — changes generated Tomcat context descriptors for non-root context paths - Multiple
JAVA_OPTS/USER_JAVA_OPTSassembly-script quoting/escaping fixes (multiline values,$DEPS_DIR/$HOMEsubstitution, bash 5.1 compatibility) - Java-version-detection fallback-to-default behavior fixes/clarifications
Recommendation: don't label these as breaking changes, but do call them out in a "Notable fixes since v5.0.0" section in the v5.1.0 GA release notes so upgrading users aren't blindsided.
In-repo todos (java-buildpack)
- Fix broken link in
README.md:ruby_vs_go_buildpack_comparison.md→RUBY_VS_GO_BUILDPACK_COMPARISON.md(case mismatch breaks on case-sensitive filesystems/GitHub) - Add explicit GA-status note in
README.md(near "Ruby vs Go Migration Status"), referencing RFC-0050, stating v5.1.0 is the first non-experimental GA release - Update
ARCHITECTURE.mdmigration-status header to reference the v5.1.0 GA milestone - Update
RUBY_VS_GO_BUILDPACK_COMPARISON.md"Migration Status" line to explicitly reference GA / v5.1.0 - Review
adoption-migration-details.mdfor any lingering pre-GA/future-tense wording - Add a short GA release-notes doc/section for v5.1.0 (modeled on the v5.0.0 GitHub release notes, minus the "Experimental Release" banner), including the "Notable fixes since v5.0.0" list above
- Validate internal doc cross-links after edits
Out of scope: docs.cloudfoundry.org updates
As a reminder, docs.cloudfoundry.org (cloudfoundry/docs-buildpacks) also needs a refresh -- not part of this issue's PRs.
Found while researching GA readiness; documented here for later follow-up (separate repo/issue/PR, not tackled now):
java/java-tips.html.md.erbreferencesconfig/open_jdk_jre.yml— Go buildpack has noconfig/*.yml, usesmanifest.ymlonly- Example CLI transcripts across multiple pages show JDK 1.8.0_25/1.8.0_342 and
.java-buildpack/open_jdk_jrepaths — v5 defaults to Java 17 and uses a different JRE path (hardcoded.java-buildpack/...paths break per the v5.0.0 release notes; must use$JAVA_HOME) getting-started-deploying-apps/gsg-grails.html.md.erb,gsg-ratpack.html.md.erb,gsg-spring.html.md.erbreference JDK 1.6/1.7/1.8 support — outdated for v5gsg-ratpack.html.md.erb— Ratpack is no longer separately detected in the Go buildpack (folded into Dist Zip, "version detection lost" per our own migration comparison doc); this dedicated getting-started guide needs rework/deprecation noticeconfiguring-service-connections.html.md.erb— describes Spring Auto Reconfiguration as installed by default with a 2022-era Ruby-buildpack deprecation timeline; v5 (Go) disables it by default — page needs updating- None of the fetched pages currently mention the Go rewrite, RFC-0050, or the v5.1.0 GA milestone
- Outdated Maven/Gradle dependency version examples:
configuring-service-connections.html.md.erbpinsio.pivotal.cfenv:java-cfenv(-jdbc/-boot):2.4.0— current buildpack-shipped version (manifest.yml) is4.0.2(also3.5.3), two major versions behindjava-client.html.md.erbMaven snippet pinsorg.cloudfoundry:cloudfoundry-client-reactor:2.0.0.BUILD-SNAPSHOT,cloudfoundry-operations:2.0.0.BUILD-SNAPSHOT,io.projectreactor:reactor-core/reactor-netty:2.5.0.BUILD-SNAPSHOT— ancient pre-release/SNAPSHOT coordinates for cf-java-client (not buildpack-owned, but stale/misleading on the samejava/docs tree)
- Incorrect "Spring Cloud Profile" migration claim —
configuring-service-connections.html.md.erb(#migrating-cloud-profile) says thecloudSpring profile requires Spring Auto Reconfiguration and instructs manually settingSPRING_PROFILES_ACTIVE=cloudif you don't use it. Inaccurate for the Go buildpack: thecloudprofile comes from Spring Boot's ownCloudFoundryVcapApplicationListener(fires onVCAP_APPLICATIONpresence), not from anything the buildpack adds — confirmed no such logic exists insrc/java/frameworks/spring_auto_reconfiguration.go. Thecloudprofile is still automatically available regardless of Spring Auto Reconfiguration's enabled state; this section needs correcting. - Missing v5 "what's new" / migration notes, incl. Memory Calculator behaviour change — no general "what's new/changed in v5" or migration-warnings page exists, and memory-troubleshooting content still shows a
Downloading Open JDK Like Memory Calculator 3.13.0_RELEASEexample (Ruby-era version). The Go buildpack ships memory-calculator v4.2.0, which has a behaviour change worth an explicit migration warning:- Full breakdown already written up in this repo:
RUBY_VS_GO_BUILDPACK_COMPARISON.md§10.2 "Memory Calculator Behaviour Change (v3 → v4)" — should be ported/adapted for docs.cloudfoundry.org. - Summary: when an app pins an explicit
-XmxinJAVA_OPTS, v3.13.0 (Ruby) squeezed non-heap memory into whatever remained after-Xmx(non-heap > totalcheck), while v4.2.0 (Go) requires the container to fit both heap and non-heap independently (non-heap + heap > totalcheck). Apps that previously fit in smaller containers under v3 can now fail to start under v4/v5 with an error likerequired memory 1269289K is greater than 750M available for allocation. When-Xmxis not pinned (recommended), there is no behaviour difference. - Migration guidance to include: (1) lower
stack_threadsif the app uses fewer than 250 threads, (2) remove the pinned-Xmxand let the calculator size heap automatically (may still require raisingmanifest.ymlmemory), or (3) increasemanifest.ymlmemory to fitXmx + non-heap. - Good candidate for a dedicated "Upgrading to v5" callout box, since this change can silently break apps at
cf push/restage time with no obvious root cause from the error message alone.
- Full breakdown already written up in this repo:
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the unchecked in-repo todos in ARCHITECTURE.md and the v5.0.0 GitHub release notes, then inspect README.md, RUBY_VS_GO_BUILDPACK_COMPARISON.md, and adoption-migration-details.md for consistent wording and links. Update the GA milestone, add v5.1.0 notes with the listed notable fixes, bump VERSION, and validate internal cross-links; leave docs.cloudfoundry.org work out of scope.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, java
- Domain
- documentation, release
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100