Posted on 2024-01-16 by Eduard Heimbuch
Dear SCM-Manager Community,
We are finally confident to announce SCM-Manager 3.0.0 which will be released soon. But before you get too excited or even panic, we would like to clarify what actually changed and how you can make the upgrade as effortless as possible.
SCM-Manager follows semantic versioning. This simply means that the new version represents the nature of the changes included. Version 3.0.0 contains breaking changes that the administrators and/or developers must be aware of and take actions. We tried to keep the breaking changes as minimal as possible, but we also wanted to take the opportunity to make some changes that we have been planning for a long time. The chances are that you will not notice the major version at all. At least users should not notice any changes.
But let's take a look at what actually will be changed and why.
Because the old version of Jetty (the underlying webserver) ran out of maintenance, we finally had to upgrade Jetty to the newer version.
By doing so, we ran into breaking changes regarding the server configuration.
This regards custom settings like a different context path or SSL configuration that has been taken place in the
The second bigger obstacle we stumbled upon is that many newer Java libraries are already (only) available for
jakarta instead of
This means that we had to upgrade many other libraries to newer versions.
We took the opportunity for breaking changes and finally simplified our server configuration.
The new configuration will fully be explained in the docs and can be done via a single
config.yml or environment variables
(this should simplify the configuration for instances running with docker).
It combines and simplifies the server configuration, the logging configuration and a lot of other sometimes hidden webapp configurations in a single file.
To give you a sneak peek of how the new
config.yml could look like:
# base server config
## Address to listen 0.0.0.0 means on every interface
## Evaluates headers set by a reverse proxy like X-Forwarded-For, X-Forwarded-Proto and X-Forwarded-Host
## increase http header size for mercurial
# ssl config - ssl is only evaluated if key store path is set
## path to your cert file
# Temp directory used for jetty webserver. The temporary directory for internal operations can be configured as "workDir" in webapp.
## Destination of logging files
## Sets explicit working directory for internal processes, empty means default java temp dir
## Home directory "scm-home" which is also set for classpath
## Warning: Enabling this option can lead to security issue.
## Number of async threads
## Max seconds to abort async execution
## Amount of central work queue workers
## Strategy for the working copy pool implementation [sonia.scm.repository.work.NoneCachingWorkingCopyPool, sonia.scm.repository.work.SimpleCachingWorkingCopyPool]
## Amount of "cached" working copies
We ensured that all SCM-Manager 2.x plugins are fully compatible and will run with SCM-Manager 3.x. The automatic migration on your first start with version 3.x could take some minutes depending on the number of installed plugins, because they have to be converted once with the built-in plugin adapter. This means you cannot downgrade afterwards. We want to mention that neither your repositories nor any data files will be processed and will not be modified.
Java 11 is outdated, as the end of life was reached in September 2023. SCM-Manager 3.x requires Java 17, which in the best case should simply be beneficial for the performance.
The new major version is mainly a technical upgrade. It's configuration has been simplified a lot and is now done via a single
config.yml or environment variables.
This is the only incompatibility which must be adjusted by an administrator.
Aside from that, the new version is fully compatible with the old one. All plugins will work as before. Also, the UI, REST API, CLI and Core APIs will not change. Most users will not notice the major version.
Beginning with the official release of SCM-Manager 3.0.0 we will end the support for SCM-Manager 2.x. Critical security issues will potentially be fixed, but we strongly suggest to upgrade your SCM-Manager asap. If your upgrade is blocked by the changed configuration format, and you need more options for the Jetty configuration, we will do our best to help you asap.
Are you still missing an important feature? How can SCM-Manager help you improve your work processes? We would love to hear from you about what you need most!