Releases: geoserver/geoserver-cloud
GeoServer Cloud 3.0.0
GeoServer Cloud 3.0.0 is the first release built on GeoServer 3.0.0. Beyond tracking the new upstream major, this release modernizes the entire foundation of the platform: a move to the Spring Boot 4 / Spring Framework 7 generation, a servlet-based API gateway, Consul service discovery, and a new build-time configuration transpiler that replaces GeoServer's runtime XML wiring with generated Java configuration. The result is a faster, leaner, and more maintainable cloud-native GeoServer.
This is a major release with breaking changes. Please read the Migration Guide (2.28.x to 3.0.0) before upgrading.
Highlights
- Built on GeoServer 3.0.0, inheriting its features and security hardening.
- Spring Boot 4 / Spring Framework 7 / Spring Cloud 2025.1 across all services.
- Servlet-based API gateway: the gateway moves from WebFlux to Spring Cloud Gateway Server MVC, simplifying request handling and aligning the whole stack on a single (WebMVC) programming model (#782, #819).
- HashiCorp Consul replaces Netflix Eureka for service discovery (#798).
- XML-to-Java configuration transpiler: a new annotation processor converts GeoServer's Spring XML into generated Java
@Configuration, with build-time@Beangeneration replacing runtime component scanning, for faster, more predictable startup (#805, #817, #832). - Faster startup: JVM AOT cache training baked into the images (#818), parallel JNDI DataSource setup (#812), and a startup actuator endpoint for monitoring (#768).
- Native multi-platform Docker builds on per-architecture runners, replacing QEMU emulation (#820).
- Refreshed UI: the initial GeoServer 3 theme (#793) and a full-screen OpenLayers 10 layer preview (#800).
- GeoServer ACL 3.0.0 integration (#869, #829, #821).
API Gateway and Web Stack
- Replace the WebFlux gateway with Spring Cloud Gateway Server MVC (#782).
- Switch the gateway to a reactor-netty HTTP client, with improved error handling and graceful shutdown via actuator (#819).
- Remove the controller hack for OWS service endpoints and clean up handler-mapping migration (#766, #767).
- Fix GWC virtual service URLs (#767).
Configuration Transpiler
- Replace GeoServer XML Spring configurations with Java
@Configurationgenerated by a new transpiler annotation processor (#805). - Replace runtime component scanning with build-time
@Beangeneration (#817). - Fix transpiler handling of package-private types and dotted bean names (#832).
- Refactor catalog/config Jackson DTOs for a clean, consistent distinction from the actual object class names (#765).
Service Discovery and Messaging
- Migrate service discovery from Netflix Eureka to HashiCorp Consul (#798).
- Fix RabbitMQ 4.x rejecting Spring Cloud Bus anonymous queue declarations (#835).
- Fix the
spring.cloud.bus.destinationproperty for Spring Cloud 2025.1 (#813).
GeoWebCache
- Backwards-compatible serialization for
GeoServerTileLayerInfoafter [GEOS-12049] removed GWC in-memory support (#779). - Enable GWC DiskQuota with the pgconfig backend, with expanded REST API integration tests (#862, #864).
- Fix a "not found" error when deleting a layer with the pgconfig backend (#867).
pgconfig Catalog Backend
- Cascade workspace changes to resources and layer groups (#856).
- Evict cached layer lists on workspace/namespace rename (#857).
- Tighten simplejndi cohesion and decouple pgconfig at runtime (#823).
Performance and Build
- Add JVM AOT cache training to the Docker images for faster startup (#818).
- Replace QEMU-emulated multi-platform builds with native per-platform runners (#820).
- Set up JNDI DataSources in parallel (#812).
- Enable the actuator startup endpoint for performance monitoring (#768).
Compatibility and Data
- Disable
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESwhen parsing catalog objects, and add backwards-compatibility tests for Jackson 2 JSON property naming (#761, #764). - Fix an error that prevented saving customized feature type attributes (#759).
- Fix an NPE caused by PMTiles layer groups (#755).
User Interface
- Initial GeoServer 3 theme ([GEOS-12063] / [GSIP-238], #793).
- Full-screen OpenLayers 10.0.8 layer preview ([GEOS-12067], #800).
Documentation
- Reorganize deployment documentation around local Kubernetes onboarding (#833).
- Document the Docker image architecture (#751).
- Add
SECURITY.md(#851), supporters documentation (#786), and contributor recognition guidance (#787).
Breaking Changes
See the Migration Guide for details and steps. In short:
- Service discovery: Eureka is replaced by Consul (
hashicorp/consul), affecting Docker Compose and Kubernetes deployments. - Gateway: now servlet-based (Spring Cloud Gateway Server MVC) instead of WebFlux.
- Docker Compose profiles: the
config-firstprofile is no longer included by default in the base service templates and must be set explicitly when using the Config Server. - Removed: the JDBC catalog/config backend and the leftover
geoserver.security.enabledproperty (#777). - Message broker: RabbitMQ 4.x is supported and used by the example deployments; the Spring Cloud Bus uses transient queues, so no broker data migration is required.
- Versioning: GeoServer Cloud now follows GeoServer's version (
3.0.0) instead of the previous four-part scheme.
Contributors
Thanks to everyone who made this release possible: @groldan, @vuilleumierc, and @jemacchi.
Full Changelog: v2.28.4.0...v3.0.0
GeoServer Cloud 2.28.4.0
GeoServer Cloud v2.28.4.0 Release Notes
Key Improvements and New Features
GeoWebCache (GWC) Integration
- DiskQuota & pgconfig: Integrated DiskQuota directly with the pgconfig catalog backend.
PostgreSQL Configuration (pgconfig)
- Cascading Changes: Workspace modifications now automatically cascade to related resources and layer groups.
- Cache Management: Enhanced cache eviction now triggers for layer lists immediately following a workspace or namespace rename.
Dependency Upgrades and Security
- GeoServer Core: Upgraded core dependency to GeoServer 2.28.4.0.
- Tileverse: Upgraded to Tileverse version 1.4.0.
- Database Stability: Pinned hsqldb to version 2.7.2 to prevent unexpected runtime version drift.
- Documentation: Backported SECURITY.md guidelines to the 2.28.x release branch.
Contributors
A special thanks to everyone who contributed to this release:
- @aaime (First-time contributor)
- @vuilleumierc
- @groldan
Raw Pull Requests and Changelog
What's Changed
- Commits for 2.28.3.0 release, and release instructions by @aaime in #838
- Upgrade to latest geoserver 2.28.x by @groldan in #847
- Upgrade tileverse 1.4.0 by @groldan in #848
- pgconfig: cascade workspace changes to resources and layer groups by @groldan in #854
- pgconfig: evict cached layer lists on workspace/namespace rename by @groldan in #855
- Pin hsqldb to 2.7.2 by @vuilleumierc in #858
- [Backport release/2.28.x] docs: add SECURITY.md by @groldan in #861
- gwc: integrate DiskQuota with the pgconfig catalog backend by @groldan in #859
- Upgrade GeoServer to 2.28.4-SNAPSHOT by @groldan in #860
Full Changelog: v2.28.3.0...v2.28.4.0
GeoServer Cloud 2.28.3.0
What's Changed
- [Backport 2.28.x] Fix RabbitMQ 4.x rejecting Spring Cloud Bus anonymous queue declarations by @groldan in #840
Full Changelog: v2.28.2.4...v2.28.3.0
GeoServer Cloud 3.0.0-RC
We are pleased to announce the release of GeoServer Cloud 3.0.0-RC, the first release candidate of the 3.0 line. This release is built on top of GeoServer 3.0-RC and brings the full platform up to the latest foundation: Spring Boot 4.0.5, Spring Cloud 2025.1.1, and the new GeoServer 3 codebase.
Highlights include a migration from the Netflix Eureka service registry to HashiCorp Consul, a move from the WebFlux-based API Gateway to Spring Cloud Gateway Server MVC, JVM AOT cache training in the Docker images for significantly faster startup, native per-platform Docker builds replacing QEMU emulation, and a new transpiler that replaces GeoServer's XML Spring configurations with build-time generated Java @Configuration classes. The release also introduces the new GeoServer 3 theme and a full-screen OpenLayers 10 preview, alongside numerous stability and compatibility improvements.
What's Changed
Features
- [GEOS-12063] [GSIP-238] Initial GeoServer 3 theme by @groldan in #793
- [GEOS-12067] Add full screen OpenLayers 10.0.8 preview by @groldan in #800
- Migrate service discovery from Netflix Eureka to HashiCorp Consul by @groldan in #798
- Replace WebFlux gateway with Spring Cloud Gateway Server MVC by @groldan in #782
- Replace GeoServer XML Spring configurations by Java Configuration classes using a new transpiler annotation processor by @groldan in #805
- Add JVM AOT cache training to Docker images for faster startup by @groldan in #818
- Replace QEMU-emulated multi-platform Docker builds with native per-platform runners by @groldan in #820
- actuator: enable startup endpoint for performance monitoring by @groldan in #768
Improvements
- Document Docker image architecture in GeoServer Cloud by @groldan in #751
- Enable AWS S3 acceptance tests in CI by @vuilleumierc in #746
- Use common acceptance tests by @vuilleumierc in #747
- Disable
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESwhen parsing catalog objects by @groldan in #761 - Add backwards-compatibility tests for Jackson 2 JSON property naming by @groldan in #764
- Refactor catalog and config Jackson DTOs for clean and consistent distinction from actual object class names by @groldan in #765
- Remove Controller hack for OWS service endpoints by @groldan in #766
- Enable javadoc formatting in palantir java format by @groldan in #775
- Move
lib/spring-boot-simplejndiandlib/spring-factorytoconfig/by @groldan in #776 - Backwards-compatible serialization for
GeoServerTileLayerInfoafter [GEOS-12049] Remove GWC in-memory support by @groldan in #779 - Ensure config/autoconfig Spring Boot processors in all modules with config properties and autoconfigurations by @groldan in #810
- Set up JNDI DataSources in parallel by @groldan in #812
- Replace runtime component scanning with build-time
@Beangeneration in transpiler by @groldan in #817 - Switch gateway to reactor-netty HTTP client, improve error handling and shutdown via actuator by @groldan in #819
- Tighten simplejndi cohesion and decouple pgconfig at runtime by @groldan in #823
Bug Fixes
- Fix SonarCloud PR analysis for fork PRs by @groldan in #750
- Fix NPE caused by PMTiles layer groups by @vuilleumierc in #755
- Fix an error that prevented saving customized feature type attributes by @groldan in #759
- Fix GWC virtual service URLs and clean up handler mapping migration by @groldan in #767
- Fix acceptance tests and REST API compatibility by @groldan in #772
- Remove
geoserver.security.enabledconfig property, remnant from catalog-service backend by @groldan in #777 - ci: add missing removal of snapshot jars from maven cache by @groldan in #788
- build: allow running scripts from the root directory checkout by @groldan in #795
- Fix pgconfig dev docker-compose sample image tags by @groldan in #796
- fix: migrate diagram generation from deprecated
structurizr/clitostructurizr/structurizrby @groldan in #797 - Fix
spring.cloud.bus.destinationproperty as of Spring Cloud 2025.1.1 by @groldan in #813 - Remove empty
gwc-cloud-servicesmodule by @groldan in #815 - Fix GeoServer ACL caching client configuration by @groldan in #821
- Remove unused dependencies on
gs-cloud-spring-factoryby @groldan in #822
Tasks
- Upgrade Spring Boot to 4.0.5 / Spring Cloud 2025.1.1 by @groldan in #814
- Rename root pom artifact
gs-cloud-bom→gs-cloud-parentby @groldan in #773 - Document how to recognize contributors by @groldan in #787
- Supporters documentation, sources, information, etc. by @jemacchi in #786
- Upgrade Flyway 12.0.2 → 12.1.0 by @groldan in #783
- chore(deps): match Spring version used upstream by @groldan in #803
- chore(ci): move
ci/requirements.txt→acceptance_tests/ci_requirements.txtby @groldan in #806 - Upgrade
logstash-logback-encoder7.3 → 9.0 by @groldan in #809 - Upgrade to latest GeoServer 3.0.x by @groldan in #828
- Upgrade GeoServer ACL to 3.0-RC3 and fix
AclSpringCloudBusclasspath issue by @groldan in #829 - Rename Testcontainers-based tests to
*ITfor Failsafe by @groldan in #830 - QA fixes by @groldan in #831
Full Changelog: v2.28.2.0...v3.0.0-RC
GeoServer Cloud 2.28.2.4
Bug Fixes
- Fix gwc virtual service urls by @mohamed-aboshosha-up42 in #778
- Fix NFS stale file handle IOException for PMTiles on NFS by @groldan in #799
Misc
- [Backport release/2.28.x] actuator: enable startup endpoint for performance monitoring by @groldan in #769
- ci: add missing removal of snapshot jars from maven cache by @groldan in #789
- Backwards compat serialization for GeoServerTileLayerInfo after [GEOS-12049]: Remove GWC-in memory support by @groldan in #780
New Contributors
- @mohamed-aboshosha-up42 made their first contribution in #778
Full Changelog: v2.28.2.3...v2.28.2.4
GeoServer Cloud 2.28.2.3
What's Changed
- Set disable DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES parsing catalog objects by @groldan in #760
- [Backport release/2.28.x] Fix an error that prevented saving customized feature type attributes by @groldan in #762
- Add backwards-compatibility tests for Jackson 2 JSON property naming by @groldan in #763
Full Changelog: v2.28.2.2...v2.28.2.3
GeoServer Cloud 2.28.2.2
What's Changed
- Upgrade tileverse to 1.2-SNAPSHOT by @groldan in #748
- Enable AWS S3 acceptance tests in CI by @vuilleumierc in #746
- Fix SonarCloud PR analysis for fork PRs by @groldan in #750
- [GEOS-12049]: Remove GWC-in memory support by @groldan in #756
- [Backport release/2.28.x] Fix NPE caused by PMTiles layer groups by @groldan in #757
- Upgrade geoserver version to 2.28.2.2 by @groldan in #758
Full Changelog: v2.28.2.0...v2.28.2.2
GeoServer Cloud 2.28.2.1
What's Changed
- Upgrade tileverse to 1.2-SNAPSHOT by @groldan in #748
- Enable AWS S3 acceptance tests in CI by @vuilleumierc in #746
- Fix SonarCloud PR analysis for fork PRs by @groldan in #750
Full Changelog: v2.28.2.0...v2.28.2.1
GeoServer Cloud 2.28.2.0
What's Changed
- Remove unnecessary duckdb_jdbc dependency override by @jemacchi in #723
- Add Control Flow extension by @groldan in #724
- Add AWS credential chain authentication support for GeoParquet S3 by @groldan in #725
- Initial port of documentation to mkdocs by @groldan in #726
- docs: remove Jekyll/kramdown ToC syntax by @groldan in #727
- Remove links from home page in favor of the navigation bar by @groldan in #728
- docs: Add All Contributors page to recognize all contribution types by @groldan in #729
- Fix NPE in CatalogPropertyResolver by @groldan in #730
- Use aws-crt-client alternative async client for gs-cog-s3 by @groldan in #731
- Skip imagemosaic acceptance tests for pgconfig by @groldan in #733
- Upgrade to Java 25 for building and base Docker image by @groldan in #732
- Update compose/standalone.yml to not even launch config and discovery by @groldan in #735
- Add acceptance tests for cloud native formats on private S3 buckets by @groldan in #736
- Add acceptance tests for OGC API Features by @groldan in #737
- Update to latest 2.28.x with PMTiles and GeoParquet fixes by @groldan in #738
- PMTiles: Spring cache integration with Actuator metrics support by @groldan in #739
- Fix a bug preventing GlobalSettingsPage to be displayed by @groldan in #741
- Pre-install Noto fonts and make i18n acceptance tests predictable by @groldan in #740
- Stop log flooding for "Cannot find 6 /accessDenied.html" by @groldan in #742
- Fix loading of DXF and Flatgeobuf output format extensions by @groldan in #743
- Migrate from the unmaintained test library javafaker to the currently maintained datafaker by @groldan in #744
- Spring Boot 3 compatible control-flow extension property initialization by @groldan in #745
Full Changelog: v2.28.1.0...v2.28.2.0
GeoServer Cloud 2.28.1.3
What's Changed
- PMTiles: Spring cache integration with Actuator metrics support by @groldan in #739
- Fix a bug preventing GlobalSettingsPage to be displayed by @groldan in #741
- Pre-install Noto fonts and make i18n acceptance tests predictable by @groldan in #740
- Stop log flooding for "Cannot find 6 /accessDenied.html" by @groldan in #742
- Fix loading of DXF and Flatgeobuf output format extensions by @groldan in #743
Full Changelog: v2.28.1.2...v2.28.1.3