Mod4j Release Guide

The Release Guide gives instructions to developers of Mod4j for releasing a new version of Mod4j. It tells what steps to take for releasing and publishing the developed Eclipse features and plug-ins to the Mod4j update site and releasing Mod4j artifacts to the central Maven repository.

Prerequisites

This section describes which prerequisites to full fill before you can start releasing.

  1. To be able to deploy artifacts to our Maven repository at Codehaus and to be able to deploy the Mod4j project site, you'll need to add the following servers to your local settings.xml:


    For deployment of the project-site you'll need the ftp -username an -password for the Mod4j ftp-server.
    Ftp-server name: ftp.mod4j.org
    Username: mod4j.org
    You should be familiar with the password that comes with the username.
  2. Svn command-client version 1.4.6 installed. Version 1.5.0 might work also, but higher versions lead to errors icw maven-scm-provider. To check the version: open a command shell and type "svn --version".
  3. If you already have a checkout of the Mod4j sources that was done with a Subversion 1.4.x client you can pass this step and move on to next. Otherwise, perform a checkout of all the sources with the svn command-client. Open a command shell and type:
    svn checkout https://svn.codehaus.org/mod4j/trunk/modules mod4j
  4. Go to the Mod4j Developer Guide and perform all import steps, to begin with step 2, from the section "Checking out, import into Eclipse, generating the DSL-editors"
  5. Now also import as Existing Project into Eclipse:
    ../modules/BusinessDomainDsl/org.mod4j.dsl.businessdomain.feature
    ../modules/BusinessDomainDsl/org.mod4j.dsl.datacontract.feature
    ../modules/BusinessDomainDsl/org.mod4j.dsl.service.feature and
    ../modules/org.mod4j.updatesite
  6. At this point your local checkout should be free of outstanding local modifications.

Release steps

  1. Choose the release version number for the Mod4j Eclipse plug-ins. For example: 1.3.0.qualifier . Check and adjust all version numbers in all Mod4j plug-ins (manifests, site.xml and feature.xml's). And commit.
  2. Choose the release version number. for the Mod4j Maven modules. For example: 1.1.0 (TODO: In future versions this must be equal to the version of the Mod4j Eclipse plug-ins. See Jira issue: http://jira.codehaus.org/browse/MODFORJ-53)
  3. Adjust the mod4j.version property in ParentPom.xpt with the Mod4j release version number. For example:
    <mod4j.version>1.1.0</mod4j.version> And commit.
  4. Create new documentation folders for the new release and next development version on the Mod4j website. Use a ftp client to create the new folders: ftp.mod4j.org/mod4j.org/wwwroot/documentation You should be familiar with the username and password for this site.
    Under the ../wwwroot/documentation folder create the following folder structure, where [release version] is fi. 1.1.0 and [next development version] is fi. 1.3.0-SNAPSHOT :
    [release version]/user-guide
    [release version]/application-architecture
    [next development version]/user-guide
    [next development version]/application-architecture
  5. Open de site.xml in the updatesite project.
  6. Click on "Build All". Now the features and plugins folder in the updatesite project contains the files we need to deploy to our updatesite (see next section).
  7. With the previous step a timebased releasenr is generated. For example: 1.1.0.200812170807
  8. Release all Maven modules (including hybrid's). Open a commandbox and navigate to the Mod4j parent-pom. Enter the following commands:
    mvn release:prepare -Pci (and enter the correct version numbers and tag when asked)
    mvn release:perform -Pci
  9. With previous step all the Mod4j modules are deployed as Maven artifacts to Maven repository at Codehaus and the project site is deployed to mod4j.org. Within 4 hours the deployed Maven artifacts at Codehaus are automatically synchronized with the central Maven repository (see: http://repo1.maven.org/maven2/org/mod4j).

Publishing the Mod4j DSL Eclipse plug-ins to the Mod4j updatesite

New versions of the Mod4j DSL Eclipse plug-in can be published on the Mod4j updatesite. We will publish each Mod4j DSL as a feature based on several plug-ins.

  1. Use a ftp client copy the features folder, plugins folder and site.xml to:
    ftp.mod4j.org/mod4j.org/wwwroot/updatesite/x.x
    You should be familiar with the username and password for this site.
  2. Make an announcement on the mailinglist.

Post release steps

After the formal release you'll need to perform the following updates.

Project site updates
  • Open the Mod4j parent pom and adjust the property "release.version.latest"
  • Fill the releasenotes.xml for the released version with a copy of the releansnotes in html from Jira
  • Add a new row to the table in ../modules/src/site/xdoc/releases/index.html for this release.
  • If it doesn exist already, create a new folder under ../modules/src/site/xdoc/releases with the name of the next version to release. And add a empty releasenotes.xml and upgradenotes.xml to it.
  • Save and commit your changes.
  • Update the site by performing a mvn clean site site:deploy -N
Prepare for next development phase
  • Adjust the version number of all Mod4j Eclipse plug-ins (x.x.x.qaulifier)
  • Adjust the mod4j.version property in ParentPom.xpt to the next development version number. For example:
    <mod4j.version>1.3.0-SNAPSHOT</mod4j.version>
  • Open ../Examples/RecordShop-ExampleProject/pom.xml and adjust the property mod4j.version to the next development version. For example: 1.3.0-SNAPSHOT.
  • Save and commit your changes.
Create a new branch for bugfixing

If the released involves a major or upgrade release a new branch must created based on the tag of the release.

  • Checkout the tag of the release.
  • Open a commandshell and navigate to the root folder of the checkout above.
  • Create the branch using the following command mvn release:branch -DbranchName=mod4j-branch-1.1 -DupdateBranchVersions=true -DupdateWorkingCopyVersions=false -Pci

Sit back, put a big smile on your face and relax.