OpenCMIS Release Documentation

Introduction

This document describes the release guidelines for Apache Chemistry OpenCMIS.

Build Environments

OpenCMIS has to be built with Maven 2.

Release Artifacts

An OpenCMIS release consists of: A source bundle containing all files that are necessary to build all other artifacts. It also contains the JavaDoc of the client API, the client bindings API and the server SPI as well as additional documentation and examples. Package formats: tar.gz and zip. Name: chemistry-opencmis--source.*

  • A client bundle containing all OpenCMIS JARs that are necessary to build a CMIS client application. Package formats: tar.gz and zip. Name: chemistry-opencmis--client.

  • A client bundle (as above) with all dependencies. Package formats: tar.gz and zip. Name: chemistry-opencmis--client-dep.

  • A server bundle containing all OpenCMIS JARs and WARs and dependencies that are necessary to build a CMIS server. Package formats: tar.gz and zip. Name: chemistry-opencmis--server.

  • An InMemory repository bundle containing a ready-to-deploy WAR. Package formats: tar.gz and zip. Name: chemistry-opencmis--server-inmemory.

  • A FileShare repository bundle containing a ready-to-deploy WAR. Package formats: tar.gz and zip. Name: chemistry-opencmis--server-fileshare.

  • A browser bundle containing a ready-to-deploy WAR. Package formats: tar.gz and zip. Name: chemistry-opencmis--browser.

Preparation

Release Manager

A release manager must be appointed for a release. He or she is in charge of the release process, following the guidelines and eventually generating the release artifacts. The release manager might tailor the process for a specific release.

Version

The OpenCMIS community decides if the release will be a major or a minor release and agrees on a version number. The string "-incubating" will be attached to incubator release version numbers.

Open Issues

There must not be any open JIRA issues for this release. There might be open issues for future releases.

Unit Tests and Integration Tests

All unit tests and integration tests must succeed on a clean machine (starting with an empty local Maven repository).

Documentation and JavaDoc

The documentation that will be part of the release must match the code. All examples in the documentation must work. The Java package documentation must be up-to-date. The JavaDoc must be generated with Maven without warnings.

Apache License and Code Style

Each source code file must have a current ASF license header. The source code should follow the OpenCMIS code style.

Release Notes

Each release must provide a RELEASE-NOTES.txt file in the base directory of the source bundle. It must contain all known issues and should contain a description of all the changes since the previous release. The release notes should also contain the minimum target Java version and a list of all dependencies with their minimum version. NOTICE.txt and LICENSE.txt must be present in all bundles and must be up-to-date.

Release Branch

A branch has to be created for every release. The naming rule for this branch is branches/chemistry-opencmis--release. A tag has to be created for every release candidate. The naming rule for the tags is tags/chemistry-opencmis--RC.

Release Candidate

Once all preparations are done, a release candidate will be built. All release candidates must be cryptographically signed. The string "-RC" will be attached to the version number of the release candidate artifacts, where is the number of the release candidate starting with 1. If more than one release candidate is required a new tag has to be created and release candidate number will be increased by one. The release candidate artifacts will be made available on people.apache.org and the release manager kicks off the VOTE process.

If the vote fails, the raised issues will be fixed, a new release candidate will be built and the VOTE process will be restarted.

If the release candidate gets approved, the release candidate artifacts will be renamed and become the release artifacts.

Release Tool

There is release tool that simplifies the creation of a release candidate.

  1. Prerequisites: Java >= 1.5, ant >= 1.8, Maven 2, SVN command line tools, wget, GPG
  2. Create a new folder and copy build.xml from trunk/release-tool to this folder.
  3. Open build.xml with your favorite editor and adjust the following property values: snapshot version, release version, release candidate, tools.
  4. Run ant prepare. This will create new sub-folders, check out the current trunk, adjust the pom.xml files and download the documentation.
  5. Check everything. Check again.
  6. Delete your local Maven repository.
  7. Run ant build. This will compile the whole project, run the JUnit tests and the integration test and create the JavaDoc. This will take some time.
  8. Make sure the build was successful. Make sure that there no warnings.
  9. Run ant pack. This will generate the release artifacts. You might be asked for the passphrase of your private GPG key.
  10. The release folder should now contain all release artifacts. Check them all carefully. Check again.
  11. If you are convinced that all artifacts are ok, upload all artifacts to people.apache.org and let the Chemistry community know.
  12. If this is the first release candidate for this release, create a release branch.
  13. Create a new release candidate tag.

Publishing The Release

Post Release Cleanup