Across 5.3.0 Release notes
By Davy
The one big change in 5.3
is that Across development has moved to an
internal GitLab server,
with the repositories also mirrored (publicly) to
GitHub.
The Across modules have been reorganized into a much smaller number of git repositories, to speed up the release process. As a result of this, there are a few small changes you need in your application.
Git repositories
From now on, you can find the Across repositories at:
- https://gitlab.isaac.nl/antwerpen/across/ (internal-only, for development)
- https://github.com/ForeachOS (public mirror, this is also in the SCM
section of the
pom.xml
files).
The GitHub sync is live: it happens on every commit.
The number of repositories has been drastically reduced, because it took way too much time to release each of these individual repositories (almost two days for Across 5.2.1, even using the (internal-only) Across Release Tool).
The following repositories still exists as before:
across-framework
(renamed from justacross
)across-autoconfigure
across-platform
All of the standard modules have been merged into four repositories:
-
across-base-modules
: Low-level modules needed in pretty much every Across application:across-hibernate-module spring-security-module debug-web-module ehcache-module logging-module
-
across-entity-admin-modules
: Closely related modules, centered around the Across “crown-jewel”entity-module
:ax-bootstrap-4-utilities ax-bootstrap-theme bootstrap-ui-module admin-web-module entity-module application-info-module properties-module
-
across-user-auth-modules
: Centered around theuser-module
and additional authentication modules:spring-security-acl-module user-module ldap-module oauth2-module
-
across-media-modules
: Media such as file/blob repositories (Amazon S3, SFTP server, …) and images, and the Web CMS:file-manager-module imageserver-client imageserver-core imageserver-admin web-cms-module
Note that in the merged repositories, the history of all files has
been preserved: all modules were merged using
--allow-unrelated-histories
.
The new release build script that comes with this can publish an entire Across Framework + Standard modules + Platform release in less than two hours. This order of magnitude improvement is key to make it easier to upgrade Across in the future.
Compatibility notes
Virtually no changes
It is important to stress that 5.3.0
is essentially the same as
5.2.2.RELEASE
. The main purpose of this release is to test out the
new Git repositories layout and the new release build script.
Version number changes
We have dropped the .RELEASE
suffix from the version numbers and
switched to Semantic Versioning. This lines up
with Spring Framework and Spring Boot, who also dropped this
OSGI-style versioning in 5.3 and 2.4 respectively.
You’ll need to be aware of this when adapting your application
pom.xml
files: remember to remove the .RELEASE
suffix as well.
The versions of all modules in the same repository have the same version number now: after all, Git tags are per repository as well. This gives:
across-framework: 5.3.0
across-autoconfigure: 2.3.0
across-base-modules: 4.3.0
across-entity-admin-modules: 4.3.0
across-user-auth-modules: 4.3.0
across-media-modules: 6.3.0
across-platform: 5.3.0
BTW, another reason that some modules clearly belonged together, could be seen in the version number: closely related modules often had the same version numbers anyway.
It’s important to state again: even if you see a big bump in a module version, nothing has actually changed! FYI, the biggest version bumps are:
ax-bootstrap-theme
from0.0.1
to4.3.0
.webcms-module
from0.3.1
to6.3.0
.
Liquibase upgraded from 4.9.1 to 4.17.0
The GitLab CI/CD runners on Amazon were consistently failing because
of concurrency issues. To fix this, we needed the use new
ThreadLocalScopeManager
introduced in this Liquibase
PR.
Image Server
The Maven groupId
for the ImageServer modules has been changed from
com.foreach.imageserver
to com.foreach.across.modules
:
-
A simple search&replace for those
groupId
s through yourpom.xml
should be sufficient to quickly and safely migrate. The MavenartifactId
s are still the same. -
The Java package names have not been modified, and still start with
com.foreach.imageserver
, so there’s nothing to change in your code.
Removed modules
The following modules have been removed from across-platform
:
-
spring-batch-module
(latest release:2.2.1.RELEASE
): Only used in some legacy microservices: PDF generator, which will be replaced with an entirely different and much simpler implementation. -
spring-mobile-module
(latest release:3.2.1.RELEASE
) : Spring Mobile itself is end-of-life: https://spring.io/projects/spring-mobile
The previous releases of those modules will most likely continue to
work with this version of across-platform
. You will have to manually
configure the version of those modules, most likely in your top-level
parent pom.xml
file.
Reproducible builds
Some minimal effort has been done to make the Across builds reproducible:
-
This is needed for a secure software supply chain.
-
But most importantly right now: this makes it far easier to
diff
anddiffoscope
on the build outputs while I was changing the build procedure.
For more info about reproducible builds and why they are important for security, see:
- https://reproducible-builds.org/
- https://slsa.dev/
- https://maven.apache.org/guides/mini/guide-reproducible-builds.html
- https://diffoscope.org/
Thanks
Big thanks to:
-
the iO Eindhoven team for setting us up on their GitLab server.
-
Arno for testing a snapshot build with a client application.