[TOC]

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.

Build Environments

OpenCMIS is built and released with Maven2 and uses the Apache POM version 9.

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: <artifactId>-<version>.<ext>
  • Source artifact: <artifactId>-<version>-sources.<ext>
  • Javadoc artifact: --javadoc.
  • POM: <artifactId>-<version>.pom

  • Also the following additional distribution commodity packages are provided as part of the release:

  • chemistry-opencmis-<version>-source-release.<ext>
    A source-release bundle containing all files the sources necessary to build all other artifacts. Package formats: zip. 

  • chemistry-opencmis-dist-<version>-docs.<ext>
    A package containing offline HTML documentation and the full javadocs for the latest release. Package formats: tar.gz and zip. 
  • chemistry-opencmis-dist-<version>-client.<ext>
    A client distribution bundle with all the client related JARs. Package formats: tar.gz and zip. 
  • chemistry-opencmis-client-impl-<version>-with-dependencies.<ext>
    A client bundle (as above) with OpenCMIS Client JARs and all dependencies. Package formats: tar.gz and zip. 
  • chemistry-opencmis-server-support-<version>.<ext>
    A WAR bundle containing the OpenCMIS server support Package formats: WAR;
  • chemistry-opencmis-dist-<version>-server-webapps.<ext>
    A bundle containing all OpenCMIS server related WARs (inmemory, fileshare, browser) Package formats: tar.gz and zip;
  • chemistry-opencmis-workbench-<version>-full.<ext>
    ZIP/Tar.gz bundles containing OpenCMIS workbench client application Package formats: tar.gz and zip;

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/<version>

(see example here).

Later, upon release approval, this will be synced in the per release sub folder

http://chemistry.apache.org/java/<version>/maven

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.

Packaging

NOTICE and LICENSE must be present in all bundles and must be up-to-date. A special mention is added for 3rd party packages included in OpenCMIS artifacts.

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. A new staging repo is created per RC and will be communicated upon release.
  • Distribution commodity packages are staged at
    http:/people.apache.org/~<username>/opencmis/<version>/dist/
  • The generated site reports/javadocs will be staged at
    http:/people.apache.org/~<username>/opencmis/<version>/site/

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:

  • release candidate maven artifacts are promoted in the Apache Maven Repository and made available at https://repository.apache.org/content/groups/public/org/apache/chemistry/
  • Maven artifacts are automatically synced to Maven Central at http://repo1.maven.org/maven2/org/apache/chemistry
  • release candidate commodity packages are synced (together with their checksum and signatures) to http://www.apache.org/dist/chemistry
  • maven site is pushed to http://chemistry.apache.org/java/<version>/maven and back-linked from [http://chemistry.apache.org/java/opencmis.html]
  • project version at http://chemistry.apache.org/java/opencmis.html  is updated
  • release tag is renamed to final version
  • release branch is created
  • Release is closed in Jira
  • Release is announced to dev@chemistry.apache.org, announce@apache.org

Post Release Cleanup

  • Update POMs and pages referencing to RC tags
  • Update DOAP file