This release is a maintenance and bug-fix release.
Java 25 support
GoCD is now built with, tested against and distributed with Java 25 LTS.
Java 17 remains the minimum supported version for bring-your-own-JRE setups, although GoCD will likely move to a Java 21 minimum with the 26.1.0 release since
- it is over two years old, and has been supported by GoCD since 24.1.0
- some key dependencies now require Java 21 for their latest versions
- Java 21 or 25 is available from default repositories for almost all major distributions, and available from Adoptium’s repositories for others.
The main changes needed to support Java 25 are additional start-up arguments pre-configured by GoCD that reduce warnings being logged by both agent and server Java runtimes. If you have customised your GoCD JVM start-up arguments and begin to see warnings after upgrade, you may want to review whether your customisations are overriding GoCD’s defaults.
Container image volume tweaks
For performance reasons, the server and agent container images now declare anonymous volumes for their primary writable directories
(/go-working-dir and /godata) on both server and agents. This should be backward compatiblew for the vast
majority of users.
Previously GoCD would use the writeable overlay filesystem to store working data if users did not mount volumes themselves. Most filesystem drivers mean use of the container overlay filesystem is much slower than a volume; and given it is unusual for users to mount volumes for (undocumented) working directories, this change should improve the speed of images for most people, especially those running elastic agents; and containers on Linux.
These volumes will be automatically removed by Kubernetes with either static or elastic agents, and by the Docker Elastic Agent plugin. However, if you are running the GoCD Server or static agents on Docker (or similar) directly, you may need to ensure anonymous volumes are cleaned up or replace with bind mount volumes to avoid accumlation of volumes over time.
Note that while not publicly documented, agents previously used /go as their working directory, which was changed to
/go-working-dir; consistent with the server. If you were previously intentionally mounting a volume at /go, you
should change to /go-working-dir when upgrading the agent image version to 25.4.0 or later.
This should allow us to move closer to –read-only and Kubernetes readOnlyRootFileSystems in future releases; a more secure default.
Enhancements
- #13991, #13881, #13880 - Build, test & package GoCD with Java 25.0.1+8
- #13989 - Improve server & agent container image performance by declaring anonymous volumes for working space
- #13908 - Improve security scan posture by consuming decomposed JRuby distribution
- #13797 - Improve UI responsiveness of maintenance mode
- #13984 - Improve UI responsiveness for admin pages which delay their initial refresh to match dashboard poll rates
- #14018, #14070, #14099, #14100, #14101 - Widespread technical improvements to improve speed and reduce memory usage across server
- #14104 - Improve agent startup speed & logging
- Starting this release, Debian 13 (Trixie) based docker images for GoCD Agent are available.
Bug fixes
- #13799 - Fix handling of pipeline material creation when entered URL is malformed
- #13841 - Fix parsing of Mercurial dates to be locale-agnostic
- #13983 - Only show scroll bars when necessary for material commit searches
- #14018 - Fix material view permissions to allow triggering a material shared by 2+ groups when a user has permission to operate any single group
- #14090 - Improve consistency of modifications and logging of decisions around which JVM to use during linux package installs
- #14091 - Ensure RPM upgrade stops and cleans up existing services correctly
- #14103 - Improve logging and consistency for console log append/move failures
Deprecations
- #14072 - Deprecate the Feeds XML-based APIs without direct replacement
The RSS/Atom style XML feed APIs have been deprecated without direct XML replacement, and will likely be removed shortly. These APIs are some of the oldest in GoCD and have not seen significant usage for many years. Their performance is often sluggish and ineffeicient compared to the JSON-based APIs since they use very different query mechanisms which don’t benefit from the same caching and attention.
If you are using these XML APIs and have not found a suitable replacement among JSON APIs, please let us know how you are using them. Currently the Scheduled Jobs API does not have a direct replacement that allows inspecting the scheduling/queue state of the server, so we may consider creating one if there is sufficient interest.
The CCTray (XML) API at /go/cctray.xml is unaffected by this deprecation.
Security fixes
There are no security fixes included in this release (for issues known to affect GoCD).
However, we regularly upgrade dependencies to mitigate known vulnerabilities from third party software (regardless of whether they are known to affect GoCD), so upgrading to the latest release is always recommended from a security perspective.
APIs
Improvements, deprecations and breaking changes in the API and plugin API have been moved to their respective changelogs - API changelog for 25.4.0 and Plugin API changelog for 25.4.0.
Contributors
Andrea Maruccia, Aravind SV, Chad Wilson, Mohamed Azirar, Vinod Dampuru, Yelin Aung
Note
A more comprehensive list of changes for this release can be found here.
Found a security issue that needs fixing? Please report it to https://hackerone.com/gocd
Please report any issues that you observe on GitHub issues.
