Releasing Hibernate Search

     

    Requirements

     

    • JDK 8 (Required for the build, but still aiming at Java 7 compatibility)
    • Maven 3.2.3
    • 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 -Pdocbook,dist,perf -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:
        • optional
        • required
        • 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 -B release:clean release:prepare release:perform -Pdocbook,dist,perf -Dtag=X -DreleaseVersion=Y -DdevelopmentVersion=Z
      > 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 the latest stable release you should also overwrite the "stable docs" URLs:
        rsync -rzh --progress --delete --protocol=28 docs/ hibernate@filemgmt.jboss.org:/docs_htdocs/hibernate/stable/search

     

    Announce

     

    • Update the community pages:
    • Blog about release on in.relation.to (Make sure to use the tags "Hibernate Search" and "Releases" for the blog entry)
    • Update hibernate.org by adding a new release file to _data/projects/search/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 updates; try to engage with the Lucene community or other communities depending on the release highlights.