Aller au contenu

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 (examples prepairs version 3.12.12 as latest 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 $version
    # 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
  2. Create change log page: docs/manual/docs/overview/change-log/

    cat <<EOF > docs/manual/docs/overview/change-log/version-$
    # Version $version
    GeoNetwork $version is a minor release.
    ## Migration notes
    ### API changes
    ### Installation changes
    ### Index changes
    ## List of changes
    Major changes:
    git log --pretty='format:* %N' $previousversion... | grep -v "^* $" >> docs/manual/docs/overview/change-log/version-$
    cat <<EOF >> docs/manual/docs/overview/change-log/version-$
    and more \... see [$version issues]($version+is%3Aclosed) and [pull requests]($version+is%3Aclosed) for full details.

    Fill in the above markdown file, removing any unused headings.

  3. Update links and navigation:

  4. docs/manual/mkdocs.yml

  5. docs/manual/docs/overview/change-log/

Test documentation locally:

cd docs/manual
mkdocs serve
Once running check the new page:
open http://localhost:8000/ocverview/change-log/$newversion

  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"
  2. Build

    # Build the new release
    mvn clean install -DskipTests
    # Download Jetty and create the installer
    cd release
    mvn clean install -Pjetty-download,bundle
    # Deploy to osgeo repository (requires credentials in ~/.m2/settings.xml)
    cd ..
    mvn deploy -Drelease
  3. Test

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

    # Set version number to SNAPSHOT
    ./ $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';
    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.13">
    git add .
    git commit -m "Update version to $nextversionsnapshot"
  5. Publishing

    # Push the branch and tag
    git push origin $versionbranch
    git push origin $version
  6. 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.12
    cd v3.12.12
    put docs/changes3.12.12-0.txt
    put release/target/GeoNetwork*/geonetwork-bundle*.zip*
    put web/target/geonetwork.war*
  7. Update or add the changelog in the documentation .

  8. 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.

  9. 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