Release Guide

This guide details the process of performing a GeoServer release.

Notify developer lists

It is good practice to notify the GeoServer developer list of the intention to make the release a few days in advance, even though the release date has been agreed upon before hand. GeoServer releases are usually made in conjunction with GeoTools releases, so the GeoTools developer list should also be notified of the associated GeoTools release a few days in advance.

On the day the release is being made is it also good practice to send a warning to the list asking that developers refrain from committing until the release tag has been created.

Prerequisites

The following are necessary to perform a GeoServer release:

  1. Commit access to GeoServer svn
  2. Edit access to the GeoServer wiki
  3. Administration rights to the GeoServer bug tracker (JIRA)
  4. Write access to GeoServer Maven Repository

For steps 2 through 4 above you may also ask someone on the developer list to perform the associated steps.

If a parallel GeoTools release is being preformed, see the GeoTools Release Guide. Alternatively you can (nicely) ask one of the GeoTools developers to perform the release for you.

Update source code

  1. Update or check out the branch to be released from.
  2. Ensure that svn status yields no local modifications.

Update the README

  1. Add an entry to release/README.txt using the following template:

    GeoServer [VERSION] ( [DATE] )
    ==============================
    
    [Short paragraph describing release]
    
    [List of notable features / improvements / bug fixes]
    
    The entire changelog can be found at:
    
    [link to JIRA changelog]
    
    This release is based on [GeoTools version].

    Example:

     GeoServer 1.7.1 (December 08, 2008)
     -----------------------------------
    
     The second release of the 1.7.1 series includes some great KML and Google
     Earth improvements, along with other new features and bug fixes. The new
     and note worthy for this release includes:
    
      * KML Super Overlay and Regionating Support
      * KML Extrude Support
      * KML Reflector Improvements
      * Mac OS X Installer
      * New SQL Server DataStore Extension
      * Improved Oracle DataStore Extension
    
    And much more. The entire changelog can be found at :
    
      http://jira.codehaus.org/browse/GEOS/fixforversion/14502
    
    This release is based on GeoTools 2.5.2.

    Note

    The “fixforversion” number for the JIRA changelog can be found by exploring the GeoServer JIRA before or after building the changelog. See the links to the various unreleased versions.

  2. Commit changes to the README:

    svn commit -m "Updating README for [VERSION]" release/README.txt

Create a release tag

  1. Create a tag for the release:

    svn copy -m "Create tag for release [VERSION]" https://svn.codehaus.org/geoserver/[BRANCH] https://svn.codehaus.org/geoserver/tags/[VERSION]
  2. Checkout the release tag:

    svn co https://svn.codehaus.org/geoserver/tags/[VERSION]

Update version numbers in tag

  1. Upgrade the version number in the following files:

    src/release/installer/win/GeoServerEXE.nsi
    src/release/installer/win/wrapper.conf
    src/release/installer/mac/GeoServer.app/Contents/Info.plist
    src/release/bin.xml
    src/release/doc.xml
    src/release/src.xml
    src/web/src/main/java/ApplicationResources*
    doc/en/user/source/conf.py
    doc/en/developer/source/conf.py

    Example (using sed):

    sed -i 's/1.7.1/1.7.2/g' src/release/installer/win/GeoServerEXE.nsi
  2. Commit changes:

    svn commit -m "Updated version numbers for [VERSION]" release web/src/main/java

Upgrade branch pom versions

  1. Update branch (not in the newly-created tag!) pom version numbers to include the next version with a “-SNAPSHOT” suffix:

    find . -name pom.xml -exec sed -i 's/[VERSION]-SNAPSHOT/[NEWVERSION]-SNAPSHOT/g' {} \;

    Example:

    find . -name pom.xml -exec sed -i 's/1.7.1-SNAPSHOT/1.7.2-SNAPSHOT/g' {} \;
  2. Commit changes:

    svn commit -m "Upgrading pom version to [NEWVERSION]-SNAPSHOT" .

Set tag pom versions

  1. Set tag pom version numbers to the correct version number (and removing the “-SNAPSHOT” suffix):

    find . -name pom.xml -exec sed -i 's/[VERSION]-SNAPSHOT/[VERSION]/g' {} \;

    Example:

    find . -name pom.xml -exec sed -i 's/1.7.1-SNAPSHOT/1.7.1/g' {} \;
  2. Commit changes:

    svn commit -m "Setting pom versions to [VERSION]" .

Build release artifacts

Warning

All operations for the remainder of this guide must be performed from the release tag, not the branch.

  1. Compile from the root of the source tree with the following command:

    mvn clean install -P release
  2. Build javadocs:

    mvn javadoc:javadoc
  3. Build artifacts:

    mvn assembly:attached

At this point the release artifacts will be located in target/release.

Note

Due to an issue with the version of the maven assembly plugin currently used, the source artifact contains target directories containing compiled classes and jars for each module, which increases its size significantly. The source artifact should be unpacked, the directories removed, and re-archived:

unzip geoserver-1.7.1-src.zip
rm geoserver-1.7.1-src.zip
cd geoserver-1.7.1
find . -name target -exec rm -rf {} \;
cd ..
zip -r geoserver-1.7.1-src.zip geoserver-1.7.1

Build documentation

Note

Building the GeoServer documentation requires the following be installed:

  • Sphinx, version 0.6 or greater

It is also helpful to have make installed, although it is not required. For Windows users a make.bat files exists that performs the same function.

HTML

  1. Change to the root of the documentation directory, or check it out (if you don’t already have it) from https://svn.codehaus.org/geoserver/tags/[VERSION]/doc

  2. Change directory to doc/user.

  3. Build HTML files for the User Manual.

    • Option 1: Run the make command:

      make html
    • Option 2: Run the sphinx-build command:

      sphinx-build -b html . build/html

      Note

      You may need to create the build/html directory.

  4. Go back to the root of the documentation tree, and change directory to doc/developer.

  5. Build HTML files for the Developer Manual.

    • Option 1: Run the make command:

      make html
    • Option 2: Run the sphinx-build command:

      sphinx-build -b html . build/html

      Note

      You may need to create the build/html directory.

  6. Create a zip file containig two folders, user and developer, with the respective HTML docs built in the previous steps. Under a Unix like system you can achieve it by getting into geoserver/src/target and perform the following commands:

    ln -s ../../../doc/en/user/build/html user ln -s ../../../doc/en/developer/build/html developer zip -r geoserver-[VERSION]-htmldoc.zip user developer

    Note

    When done, the zip file should contain two folders, one called user containing the HTML output for the User Manual, and one called developer containing the HTML output for the Developer Manual.

PDF

Note

Building PDF files from Sphinx is a two step process. First, it is necessary to create LaTeX files from Sphinx. Next, convert the LaTeX file to PDF using pdflatex.

Note

Building PDF files, in addition to Sphinx, requires the pdflatex utility.

  1. Change to the root of the documentation directory.

  2. Change directory to doc/user.

  3. Build LaTeX files for the User Manual.

    • Option 1: Run the make command:

      make latex
    • Option 2: Run the sphinx-build command:

      sphinx-build -b latex . build/latex

      Note

      You may need to create the build/latex directory.

  4. Change directory to build/latex.

  5. Convert the .tex file to .pdf:

    pdflatex GeoServerUserManual.tex GeoServerUserManual.pdf
  6. Immediately run the same command a second time:

    pdflatex GeoServerUserManual.tex GeoServerUserManual.pdf

    Note

    This seemingly duplicate step is required because the PDF table of contents and associated bookmarks are not generated on the first pass.

  7. Go back to the root of the documentation tree, and change directory to doc/developer.

  8. Build LaTeX files for the Developer Manual.

    • Option 1: Run the make command:

      make latex
    • Option 2: Run the sphinx-build command:

      sphinx-build -b latex . build/latex

      Note

      You may need to create the build/latex directory.

  9. Change directory to build/latex

  10. Convert the .tex file to .pdf

    pdflatex GeoServerDeveloperManual.tex GeoServerDeveloperManual.pdf

  11. Move the PDF created for the User Manual into this directory.

  12. Create a zip containing the two PDF files:

    zip -r geoserver-[VERSION]-pdfdoc.zip *.pdf

CITE testing

  1. Change directory to src/target/release and unzip the binary package:

    cd target/release
    unzip geoserver-*-bin.zip
  2. Execute the GeoServer CITE tests as described in the Cite Test Guide.

  3. Unzip the war package and deploy the war in a servlet container such as Tomcat:

    unzip geoserver-*-war.zip
    cp geoserver.war /opt/tomcat5/webapps
  4. Re-run GeoServer CITE tests with the war package.

Hand testing

Start GeoServer with the release data directory and test by hand. A checklist of things to test can be found in the Release Testing Checklist.

Deploy Artifacts

Deploy artifacts to the maven repository using the following command:

mvn deploy

Build Windows installer

Note

This step requires a Windows machine.

  1. Download and install NSIS.

  2. Install the NSIS Access Control plugin. The simplest way to do this is to download the zip, extract the two .DLL files (AccessControl.dll and AccessControlW.dll) and copy them to the NSIS plugins directory (usually C:\Program Files\NSIS\Plugins).

  3. Unzip the binary GeoServer package:

    unzip geoserver-[VERSION]-bin.zip
  4. Copy the files from src/release/installer/win to the root of the unpacked archive (the same directory level as the start.jar):

    GeoServerEXE.nsi
    gs.ico
    header.bmp
    side_left.bmp
    splash.bmp
    wrapper.conf
    wrapper.dll
    wrapper.exe
    wrapper.jar
    wrapper-server-license.txt
    
    ../_images/win-installer1.png
  5. Right-click on the installer script GeoServerEXE.nsi and select Compile Script.

    ../_images/win-installer2.png

After successfully compiling the script, an installer named geoserver-[VERSION].exe will be located in the root of the unpacked archive.

../_images/win-installer3.png

Build Mac OS X installer

Note

This step requires a Macintosh machine.

Change directory to src/release/installer/mac and follow the instructions in README.txt.

Release on JIRA

Note

This step requires administrative privileges in JIRA.

  1. Log into GeoServer JIRA.

  2. Click the “Administer Project” link on the left hand side of the page.

    ../_images/jira1.png
  3. Click the Manage link on the right hand side of the page.

    ../_images/jira2.png
  4. Find the row for the version being released and click the Release link located on the right.

    ../_images/jira3.png
  5. Move back any open issues to the next version, and click the Release button.

    ../_images/jira4.png

Upload release artifacts to SourceForge

All of the artifacts generated so far need to be uploaded to the SourceForce File release System. There are various ways to do so, consult the documentation to find out the one better suited for you.

The simplest way for developers working under a Unix like system is to use scp:

scp *.zip [email protected]:uploads

The same can be accomplished in Windows using WinSCP.

Release on SourceForge

Note

This step requires administrative privileges in SourceForge.

Primary artifacts

  1. Log in to SourceForge.

  2. Go to the GeoServer SourceForge page.

  3. Under the Project admin tab select Feature Settings.

  4. Click Manage in the File Release System row

    ../_images/sf1.png
  5. Click Add Release next to the GeoServer package.

    ../_images/sf2.png
  6. Enter the release version and click the Create This Release button.

    ../_images/sf3.png
  7. Copy the contents of the README (from previous step) into the Release Notes text box.

  8. Generate the change log from JIRA (text format) and copy the contents into the Change Log text box.

  9. Click the Preserve my pre-formatted text check box.

  10. Click the Submit/Refresh button.

    ../_images/sf4.png
  11. Scroll down to the Add Files To This Release section and check off all the primary artifacts.

    Warning

    Be sure not to include the extension/plugin artifacts in this step!

    ../_images/sf5.png
  12. Click the Add Files and/or Refresh View button.

  13. Scroll down to the Edit Files In This Release section.

  14. For the .dmg artifact set the Processor to i386 and the File Type to .dmg.

    ../_images/sf6.png
  15. For the .exe artifacts set the Processor to i386 and the File Type to .exe.

  16. For the src artifact set the Processor to Platform-Independent and the File Type to Source .zip.

  17. For all other artifacts set the Processor to Platform-Independent and the File Type to .zip.

Note

The processor and file type must be set one artifact at a time, clicking the the Update/Refresh button at each step.

Extension artifacts

Following steps from the previous section create a release of the GeoServer Extensions package consisting of all the plugin artifacts. A few things to note:

  • The release version is the same as the primary artifact release.
  • The Release Notes and Change Log may be omitted.
  • Each plugin artifact is Platform-Independent and of File Type .zip.

Create a download page

  1. Go to http://geoserver.org/display/GEOS/Stable and log in.

    Note

    If creating an experimental release, navigate instead to http://geoserver.org/display/GEOS/Latest

  2. Click the Add Page link under the Page Operations menu.

  3. Name the page “GeoServer [VERSION]”.

  4. Click the Select a page template link.

    ../_images/wiki1.png
  5. Select Download and click the Next button.

  6. Fill out the fields for the following variables:

    VERSION
    DATE
    JIRA_VERSION
    SF_RELEASE_ID
    

    Note

    The SF_RELEASE_ID is the release number assigned by SourceForge for the release created in the previous step.

  7. Click the Insert Variables button.

  8. Click the Save button.

Announce the release

Mailing lists

Send an email to both the developers list and users list announcing the release. The message should be relatively short. The following is an example:

Subject: GeoServer 1.7.1 Released

The GeoServer team is happy to announce the release of GeoServer 1.7.1.
The release is available for download from:

http://geoserver.org/display/GEOS/GeoServer+1.7.1

This release comes with some exciting new features. The new and
noteworthy include:

   * KML Super Overlay and Regionating Support
   * KML Extrude Support
   * KML Reflector Improvements
   * Mac OS X Installer
   * Dutch Translation
   * Improved Style for Web Admin Interface
   * New SQL Server DataStore Extension
   * Improved Oracle DataStore Extension
   * Default Templates per Namespace

Along with many other improvements and bug fixes. The entire change log
for the 1.7.1 series is available in the issue tracker:

http://jira.codehaus.org/browse/GEOS/fixforversion/14502

A very special thanks to all those who contributed bug fixes, new
features, bug reports, and testing to this release.

--
The GeoServer Team

SourceForge

  1. Log in to SourceForge.

  2. Edit the release, and scroll down to the bottom of the page.

  3. Check the I’m sure check box, and click the Send Notice button.

    ../_images/sfnotice.png
  4. Repeat for the extension release.

GeoServer Blog

Note

This step requires an account on http://blog.geoserver.org

  1. Log into the GeoServer Blog.
  2. Create a new post. The post should be more “colorful” than the average announcement. It is meant to market and show off any and all new features. Examples of previous posts:
  3. Do not publish the post. Instead present it to the GeoServer outreach team for review, and they will publish it.

SlashGeo

Note

This step requires an account on http://slashgeo.org

  1. Go to http://slashgeo.org, and log in, creating an account if necessary.
  2. Click the Submit Story link on the left hand side of the page. Examples of previous stories:

FreeGIS

Send an email to bjoern dot broscheit at uni-osnabrueck dot de. Example:

Subject: GeoServer update for freegis

GeoServer 1.7.1 has been released with some exciting new features. The big
push for this release has been improved KML support. The new and noteworthy
include:

  * KML Super Overlay and Regionating Support
  * KML Extrude Support
  * KML Reflector Improvements
  * Mac OS X Installer
  * Dutch Translation
  * Improved Style for Web Admin Interface
  * New SQL Server DataStore Extension
  * Improved Oracle DataStore Extension
  * Default Templates per Namespace

Along with many other improvements and bug fixes. The entire change log for
the 1.7.1 series is available in the issue tracker:

http://jira.codehaus.org/browse/GEOS/fixforversion/14502

FreshMeat

Note

This step requires an account on http://freshmeat.net/

  1. Go to http://freshmeat.net/ and log in.

  2. Search for “geoserver” and click the resulting link.

  3. Click the add release link at the top of the page.

  4. Choose the Default branch

  5. Enter the version and choose the appropriate Release focus.

    Note

    The release focus is usually 4,5,6, or 7. Choose which ever is appropriate.

  6. Enter a succinct description (less than 600 characters) of the Changes.

  7. Update the links to the following fields:

    • Zip
    • OS X package
    • Changelog
  8. Click the Step 3 button.

  9. Click the Finish button.