OpenCMIS Release Documentation

Introduction

This document describes the release process for Apache Chemistry OpenCMIS. It heavily refers to standard Apache procedures to release Maven based projects at Apache. Also [general incubator best practices|http://incubator.apache.org/guides/releasemanagement.html] have been implemented.

Build Environments

OpenCMIS is built and released with Maven2 and uses the [Apache POM version 7|http://svn.apache.org/repos/asf/maven/pom/tags/apache-7/pom.xml] .

Release Artifacts

An OpenCMIS release (see an exampled of all released packages here ) consists of:

  • All POMs/JARs/WARs built as part of the standard Maven build process. For an overview on the released modules see artifacts with groupId org.apache.chemistry.opencmis in the Apache Maven Repository . In detail, per every module, where applicable, the following artifacts are produced: Main artifact: -. Source artifact: --sources. Javadoc artifact: --javadoc. POM: -.pom

  • Also the following additional distribution commodity packages are provided as part of the release: A source-release bundle containing all files the sources necessary to build all other artifacts. Package formats: zip.  Name: chemistry-opencmis--source-release. A package containing offline HTML documentation and the full javadocs: Package formats: tar.gz and zip.  Name: chemistry-opencmis--docs. A client distribution bundle with all the client related JARs: Package formats: tar.gz and zip.  Namechemistry-opencmis-dist--client. A client bundle (as above) with OpenCMIS Client JARs and all dependencies. Package formats: tar.gz and zip.  Name: chemistry-opencmis-client-impl--with-dependencies. A bundle containing the OpenCMIS server WARs and support Package formats: tar.gz and zip.  Namechemistry-opencmis-dist--server. A bundle containing all OpenCMIS server related WARs (inmemory, fileshare, browser) Package formats: tar.gz and zip.  Name: chemistry-opencmis-dist--server-webapps.

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.

The Maven site documentation will be generated as part of the release and deployed as part of the vote at http:/people.apache.org/~gabriele/opencmis/ (see an example ) . Later, upon release approval, this will be synced in a sub folder of http://incubator.apache.org/chemistry/ and linked from the wiki home page. This will allow to publish up to date Java Doc and test reports.

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).

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 Tag

A tag has to be created for every release candidate. The naming rule for the tags is tags/chemistry-opencmis--RC. This is created as part of the Maven release process. The tag will be renamed to the final version number upon vote approval.

Release Branch

A branch has to be created for every release. The naming rule for this branch is branches/chemistry-opencmis--release. This has to be created manually upon release approval.

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:

  • Maven artifacts will be staged on repository.apache.org 
  • Distribution commodity packages are staged at {color:#003366}http:/people.apache.org/~/opencmis//dist/{color} 
  • The generated site reports/javadocs will be staged at {color:#003366}http:/people.apache.org/~/opencmis//site/{color}

Once candidate artifacts are available, 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, we can proceed to release publishing.

Publishing The Release

If the release candidate gets approved, we can proceed to release publishing: