Doing a GeoNetwork release

This section documents the steps followed by the development team to do a new release.

Once the release branch has been thoroughly tested and is stable a release can be made.

  1. Prepare the release

# Setup properties

# Get the branch
git clone --recursive \
cd geonetwork-$versionbranch

# Create or move to the branch for the version
# Create it if it does not exist yet
git checkout -b $versionbranch $frombranch
# or move into it if it exist
# git checkout $versionbranch
# or stay in main branch if the release is on main

# Update version number (in pom.xml, installer config and SQL)
./ $currentversion $newversion

# Generate list of changes
cat <<EOF > docs/changes$newversion.txt
=== GeoNetwork $version: List of changes
git log --pretty='format:- %s' $previousversion... >> docs/changes$newversion.txt
  1. Commit & tag the new version

# Then commit the new version
git add .
git commit -m "Update version to $newversion"

# Create the release tag
git tag -a $version -m "Tag for $version release"
  1. Build

# Build the new release
mvn clean install -DskipTests -Pwar -Pwro4j-prebuild-cache

# Download Jetty and create the installer
cd release
mvn clean install -Djetty-download

# Deploy to osgeo repository (requires credentials in ~/.m2/settings.xml)
mvn deploy
  1. Test

cd target/GeoNetwork-$newversion
unzip geonetwork-bundle-$ -d geonetwork-bundle-$newversion
cd geonetwork-bundle-$newversion/bin
./ -f
  1. Set the next version

# Set version number to SNAPSHOT
./ $newversion $nextversion

# Add SQL migration step for the next version
mkdir web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v424
cat <<EOF > web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v424/migrate-default.sql
UPDATE Settings SET value='4.2.4' WHERE name='system/platform/version';
UPDATE Settings SET value='SNAPSHOT' WHERE name='system/platform/subVersion';
vi web/src/main/webResources/WEB-INF/config-db/database_migration.xml

In WEB-INF/config-db/database_migration.xml add an entry for the new version in the 2 steps:

<entry key="3.12.2">
git add .
git commit -m "Update version to $nextversion"
  1. Publishing

# Push the branch and tag
git push origin $versionbranch
git push origin $version

Generate checksum files

  • If using Linux:

cd web/target && md5sum geonetwork.war > geonetwork.war.md5 && cd ../..
cd release/target/GeoNetwork-$version && md5sum geonetwork-bundle-$ >  geonetwork-bundle-$ && cd ../../..
  • If using Mac OS X:

md5 -r web/target/geonetwork.war > web/target/geonetwork.war.md5
md5 -r release/target/GeoNetwork-$newversion/geonetwork-bundle-$ > release/target/GeoNetwork-$newversion/geonetwork-bundle-$

On sourceforge first:

sftp $sourceforge_username,
# For stable release
cd /home/frs/project/g/ge/geonetwork/GeoNetwork_opensource
# or for RC release
cd /home/frs/project/g/ge/geonetwork/GeoNetwork_unstable_development_versions/
mkdir v3.12.1
cd v3.12.1
put docs/changes3.12.1-0.txt
put release/target/GeoNetwork*/geonetwork-bundle*.zip*
put web/target/geonetwork.war*

Update or add the changelog in the documentation .

Close the milestone on github with link to sourceforge download.

Publish the release on github .

Update the website links .

Send an email to the mailing lists.

  1. Merge in depending branches

If a major version, then master version has to be updated to the next one (eg. if 3.8.0, then 3.7.x is 3.9.x).

# Create it if it does not exist yet
git checkout master
./ $currentversion $nextMajorVersion

In the following folder web/src/main/webapp/WEB-INF/classes/setup/sql/migrate create v370 folder.

In this folder create a migrate-default.sql with the following content:

UPDATE Settings SET value='3.7.0' WHERE name='system/platform/version';
UPDATE Settings SET value='SNAPSHOT' WHERE name='system/platform/subVersion';

In web/src/main/webResources/WEB-INF/config-db/database_migration.xml add the following for the migration to call the migration script:

<entry key="3.7.0">

Commit the new version

git add .
git commit -m "Update version to $nextMajorVersion"
git push origin master