Apache UIMA Doing a UIMA Release UIMA project logo

General

Community

Development

Conferences

Doing a UIMA Release


Release Discussions - Release Plan

At the beginning of the "UIMA Release Process" there must be consensus in the developer community about the JIRA issues that should be part of the next release and the time frame for the release. The result of this discussion should be published in a release plan to the UIMA wiki. This release plan should be kept up-to-date any time so that everybody can have a look at the target dates to calculate personal ToDos.

The previous UIMA release plans and a release plan template are available in the UIMA wiki at http://cwiki.apache.org/UIMA/release-plan.html


Preparing The Sourcecode For The Release

Before the source code can be tagged for the release check the points in the list below:

  • Make sure that each release artifact that should be released has the correct version number. There is an ant build script you can run here: uimaj-distr/src/main/build/changeVersion.xml. To run it, first edit the file versions.properties in the same ... / build directory, setting the "previous" version (the current version info in the source), and the "new" version that it should be set to. Then, cd to uimaj-distr/src/main/build and do ant changeVersion.xml to run it. It checks the following places for correct versions.
    • uimaj project: POM.xml
    • uimaj child projects: check version for the parent POM
    • uimaj plugin projects (uimaj-ep-...): MANIFEST.MF
    • uimaj-core project: UIMAFramework_impl.java
    • uimaj-dist project: ReleaseNotes and Readme files
    • uima-docbooks project: common_book_info.xml and index.html
    • uimaj Eclipse feature and update site
    Some of these things it doesn't update (if the update is complicated); in these case, it will instead, issue a reminder message to you to update things manually.
  • Make sure that the README files has been updated with the latest release information and release numbers.
  • Update both versions (text and HTML) of the release notes for the release. JIRA can provide a list of issues for a certain release when using the 'ReleaseNotes' function.
  • Do a quick release audit if for example all license headers are in place by using the RAT (Release Audit Tool) tool.


Building The Release Candidate

All the preparation to build the release candidate is done. In the next step we have to tag the release source code in SVN. Most of time the first release tag isn't the release candidate that is shipped later so we established a simple tag structure where all tags for a release are stored until the final release candidate is found. When looking at the SVN you will find a structure like

uimaj/tags/uimaj-<release version>/uima-<release version>-<tag counter>.
uimaj/tags/uimaj-2.2.1/uima-2.2.1-01.
See Tagging Releases for more info on tagging a release.

After tagging the release the release candidate can be built using the provided build scripts. The release build needs to be built from the tagged version; this avoids getting into the build any changes that might occur subsequent to the tagging event. Further details about how to create the release distribution and how to sign them can be found here. Be sure to sign the release.


Tagging Releases

The UIMA base framework is tagged by using the svn "copy" command to copy the HEAD revision of ..uima/uimaj/trunk to ..uima/uimaj/tags/uimaj-[version-number such as 2.2.2]/[release candidate]

Sub-projects, such as uima-as, are done in a similar manner, but with additional copies as needed if these sub-projects also depend on base UIMA source files. The uima-as sub-project can be tagged by running the tag script in the uima-as-distr/src/main/build directory.


Auditing The Release And Create A RAT report

To audit the release the RAT (Release Audit Tool) should be used. Check out the latest version from the website and run the tool on the unpacked release artifacts (binary and source distribution). The command line can look like:

java -jar rat-0.5.1.jar <release-artifact-directory> > report.txt

The RAT tool generates the audit report and write it to the report.txt file. Check this file for all lines starts with !????? and comment them why they does not have a license header or fix them.


Doing The Release Vote

When all issues are fixed, all test cases are executed successfully and the documentation is up-to-date maybe the release level is found and the release manager can start a release vote on the uima-dev mailing list. With this vote the release manager checks if all committers agree to ship the release level. The vote must be aligned with the Apache vote process.


Ask Incubator PMC To Release

After a successful release vote for the release on the uima-dev mailing list the release is ready for publishing. But before that, the Incubator PMC must approve the release and vote on it. This is necessary since UIMA is still in the Apache Incubator. For details about this approval look at the Incubation Poling Constraints. The vote for the Incubator PMC must be started on the incubator mailing list. The vote mail must contain links to the release artifacts as they will be published, the commented RAT report for the source and binary distribution and a link to the passed uima-dev mailing list release vote.


Publish The Release
  • Upload the release artifacts to the distribution server (via uploading to people.apache.org in the directory: /www/www.apache.org/dist/incubator/uima, including the release artifacts and the Eclipse update site data. Be sure to include the gpg/md5/sha1 signatures. Make sure the KEYS file in that uploaded directory is current. Additionally it is necessary to update the download page of the UIMA website to make the new release artifacts available.
    • The Eclipse update site on w.a.o/dist/uima will have previous versions of the jars for the features and plugins. The generated site in uimaj-eclipse-update-site/target/eclipse-update-site has the new version plugin and feature jars. These should be added to the w.a.o/dist/uima update site - leave the others that are already there in place. The other non-jar files should be updated from the generated site.
  • Update the documentation page with the new data on the UIMA website. The mirroring stuff is embedded in the markup - just substitute within that markup the name of the new release (assuming you followed the previous release's nameing conventions for the higher-level directories).
  • Upload the release artifacts to the Maven Incubator repository. To start the upload the following command must be executed from the uimaj project

    mvn -DsignArtifacts=true process-resources source:jar deploy

    Before the upload is started, make sure that the Maven settings.xml file is configured properly. It must contain a section like:
    <servers>
      <server>
        <id>staging-repository</id> 
        <username>YOUR_USER_NAME</username>
        //either use password or privateKey authentication
        <password>YOUR_PASSWORD</password>
        <privateKey>PATH_TO_YOUR_PRIVATE_KEY_FILE</privateKey>
        <configuration>
          //specify ssh and scp executables (here Putty executables are used)
          <sshExecutable>plink</sshExecutable>
          <scpExecutable>pscp</scpExecutable>
        </configuration>
      </server>
    </servers>
  • The build of the final release candidate will have updated in the uimaj-eclipse-update-site/features directory the new release jars corresponding to the features for this release. These Jars will be needed the next time the release is done, so they need to be copied to main SVN trunk branch in the folder uimaj-eclipse-update-site/features. This needs to be done sometime before the next release build is done.

Announce The Release

To announce the published release send and email to

  • announce@apache.org
  • uima-user@incubator.apache.org
and describe the major changes of the release. The email should contain the Apache Incubation disclaimer as long as Apache UIMA is in the incubation phase. Announcements should be posted from the release manager's apache.org address. For more details please refer to A Guide To Release Management During Incubation.

Our main uima website has a "News" section that should be updated with news of the release.




Copyright © 2006-2008, The Apache Software Foundation