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.
-
Prepare the release (examples prepairs version 3.12.12 as latest release):
# Setup properties frombranch=origin/3.12.x versionbranch=3.12.x version=3.12.12 minorversion=0 newversion=$version-$minorversion currentversion=3.12-SNAPSHOT previousversion=3.12.11 nextversion=3.12.13 nextversionsnapshot=$currentversion nextMajorVersion=4.0.0-SNAPSHOT # Get the branch git clone --recursive https://github.com/geonetwork/core-geonetwork.git \ geonetwork-$versionbranch 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) ./update-version.sh $currentversion $version # Generate list of changes cat <<EOF > docs/changes$newversion.txt ================================================================================ === === GeoNetwork $version: List of changes === ================================================================================ EOF git log --pretty='format:- %s' $previousversion... >> docs/changes$newversion.txt
-
Create change log page:
docs/manual/docs/overview/change-log/
cat <<EOF > docs/manual/docs/overview/change-log/version-$version.md # Version $version GeoNetwork $version is a minor release. ## Migration notes ### API changes ### Installation changes ### Index changes ## List of changes Major changes: EOF git log --pretty='format:* %N' $previousversion... | grep -v "^* $" >> docs/manual/docs/overview/change-log/version-$version.md cat <<EOF >> docs/manual/docs/overview/change-log/version-$version.md and more \... see [$version issues](https://github.com/geonetwork/core-geonetwork/issues?q=is%3Aissue+milestone%3A$version+is%3Aclosed) and [pull requests](https://github.com/geonetwork/core-geonetwork/pulls?page=3&q=is%3Apr+milestone%3A$version+is%3Aclosed) for full details. EOF
Fill in the above markdown file, removing any unused headings.
-
Update links and navigation:
-
docs/manual/mkdocs.yml
docs/manual/docs/overview/change-log/maintenance.md
Test documentation locally:
Once running check the new page:-
Commit & tag the new version
-
Build
-
Test
-
Set the next version
# Set version number to SNAPSHOT ./update-version.sh $version $nextversionsnapshot # Add SQL migration step for the next version mkdir web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v${nextversion//[.]/} cat <<EOF > web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v${nextversion//[.]/}/migrate-default.sql UPDATE Settings SET value='${nextversion}' WHERE name='system/platform/version'; UPDATE Settings SET value='SNAPSHOT' WHERE name='system/platform/subVersion'; EOF 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: -
Publishing
-
Generate checksum files
-
If using Linux:
-
If using Mac OS X:
On sourceforge first:
sftp $sourceforge_username,geonetwork@frs.sourceforge.net # 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.12 cd v3.12.12 put docs/changes3.12.12-0.txt put release/target/GeoNetwork*/geonetwork-bundle*.zip* put web/target/geonetwork.war* bye
-
-
Update or add the changelog in the documentation https://github.com/geonetwork/doc .
-
Close the milestone on github https://github.com/geonetwork/core-geonetwork/milestones?state=closed with link to sourceforge download.
Publish the release on github https://github.com/geonetwork/core-geonetwork/releases .
Update the website links https://github.com/geonetwork/website .
- Add the changes file for the release to https://github.com/geonetwork/doc/tree/develop/source/overview/change-log
- List the previous file in https://github.com/geonetwork/doc/blob/develop/source/overview/change-log/index.rst
- Update the version: https://github.com/geonetwork/website/blob/master/docsrc/conf.py
- Update the download link: https://github.com/geonetwork/website/blob/master/docsrc/downloads.rst
- Add the section for the new release: https://github.com/geonetwork/website/blob/master/docsrc/news.rst
Send an email to the mailing lists.
-
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 ./update-version.sh $currentversion $nextMajorVersion
In the following folder
web/src/main/webapp/WEB-INF/classes/setup/sql/migrate
createv370
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"> <list> <value>WEB-INF/classes/setup/sql/migrate/v370/migrate-</value> </list> </entry>
Commit the new version