While Fili development generally happens in a roll-forward kind of way, we need to periodically draw a line in the sand and mark groups of changes as “stable” and supported. Typically, it’s a good idea to do this just before large, codebase-wide refactorings or changes are about to happen. To make it easier to do, since more frequent releases make upgrading hurt less, here are the general steps in the process.
As development happens for Fili, changes build up in the development line, and descriptions of those changes build up in the “current” section of the CHANGELOG. As part of declaring the release stable, the changelog needs to be cleaned up so that the changes are easy to digest for those upgrading, flag them for the version they apply to, and move them into an “immutable” section so that new changes don’t continue to be added. Here are the steps:
Changed
, Deprecated
, Fixed
,
Known Issues
, and Removed
.After the stable version is released, we need to get the next development line set up so that new work and changes are on the new version line, rather than continuing to be added to the just-released stable version. Here are the steps for that.
version.fili
and version
properties in the root pom.xml
file to the next development
version snapshotUpdate the parent
->version
property in the all of the module pom.xml
files to the next development version
snapshot
Note: There’s probably a “maven-y” way to do this, but search-replace has generally done well for me.
The CI/CD scripts we use to auto-release changes on the development line are aggressive, and will release the “start next development line” changes on the old version line. Instead, what we’d like to have happen is to have the “start next development line” changes to be released as the vX.Y.0 version for that new line. Here are the steps involved in making that happen:
Add proper version tag to the commit that starts the next line
For example, the proper tag will be v0.8.0
if we’re releasing the v0.7.x
line as stable and starting development
on the v0.8.0
line). This wil cause the same artifact to be built and released under the proper version number.