Releasing Hibernate Search

 

Requirements

 

  • JDK 7
  • Maven 3.0.4
  • Maven configured to use the JBoss repositories, with permissions to upload. Make sure your settings.xml is configured accordingly.

 

Release process

 

To prepare and release a new version of Hibernate Search follow these steps (executed against the branch you intend to release):

 

Prepare

 

  • Verify the project status
    • Make sure there are no outstanding issues in JIRA
    • Verify the tests and artifacts:
      > mvn clean install -Pdist -s settings-example.xml
    • Check the distribution package as built by Maven (distribution/target/hibernate-search-<version>-dist). Especially check the jar files in the subdirectories clustering, optional, required and provided. They should contain the appropriate dependencies, without duplicates. The creation of these directories is driven by the assembly plugin (distribution/src/main/assembly/dist.xml) which is very specific and might break with the inclusion of new dependencies. The root directory of the distribution should contain the hibernate-search-<version>.jar and hibernate-search-infinispan-<version>.jar. You can get a list of the included jars by for example running:
      > find distribution/target/hibernate-search-<version>-dist -name "*.jar" | awk 'BEGIN { FS = "/" } ; {print $8 "\t" $7}'  | sort

Release

 

  • Release the version on JIRA
  • Update the changelog.txt in project root from JIRA's release notes
  • Verify readme.txt :
    • is containing up to date information
    • contained links are not broken
    • current date and version number at the header of the readme.txt
  • Commit any outstanding changes
  • Tag and build the release using the maven release plugin. During release:prepare you will have to specify the tag name and release version.
    > mvn release:prepare -Pdocs,dist,perf
    > mvn release:perform 
    > git push upstream HEAD
    > git push upstream  <release-version>
    Note: It is important to activate ALL module profiles manually in release:perform. Otherwise the non activated module POMs will not get transformed.
  • Log in to Nexus and close the temporary staging repository. See more details about using the staging repository here.
  • Test the release in the staging repository. If there is a problem, drop the staging repo, fix the problem and re-deploy. If everything is ok, promote the staging repo to the releases repository.
  • If it's a final release, create maintenance branches for the previous version.
    • mvn versions:set -DnewVersion=A.B.C-SNAPSHOT
    • git add, commit, push upstream the new branch.

 

Publish

 

  • Upload the distribution packages to SourceForge. You need to be member of the Hibernate project team of Sourceforge to do that. See Sourceforge instructions: Release Files for Download.
    • Copy the changelog.txt (in target/checkout/distribution/target/hibernate-search-<version>-dist)
    • Copy the readme.txt (in target/checkout/distribution/target/hibernate-search-<version>-dist)
    • Copy the zip distribution (in target/checkout/distribution/target)
    • Copy the tar.gz distribution (in target/checkout/distribution/target)
    • Copy the zip containing the JBoss Modules (in target/checkout/modules/target)
  • Close all resolved JIRA issues
  • Upload the documentation to docs.jboss.org. You should be able to use rsync to get the documentation via (provided you are in the docs directory of the unpacked distribution):
    rsync -rzh --progress --delete --protocol=28 docs/ hibernate<at>filemgmt.jboss.org:/docs_htdocs/hibernate/search/<version>
  • If it is final release you have to add the symbolic link /docs_htdocs/hibernate/stable/search . You can't create symlinks on the server so you either create it locally then rsync it up, or make a copy of the documentation in that URL.

 

Announce

 

  • Update the community pages:
  • Blog about release on in.relation.to (Make sure to use the tag 'Hibernate Search' and 'Hibernate' for the blog entry)
  • Update hibernate.org by adding a new release file to _data/projects/validator/releases and deploying to production (you might want to delete an older release file, if you don't want it displayed anymore)
  • Send email to hibernate-dev and hibernate-announce
  • Twitter