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.
There is release tool that simplifies the creation of a release candidate.
- Prerequisites: Java >= 1.5, ant >= 1.8, Maven 2, SVN command line tools,
wget, GPG
- Create a new folder and copy build.xml from trunk/release-tool to
this folder.
- Open build.xml with your favorite editor and adjust the following
property values: snapshot version, release version, release candidate,
tools.
- Run ant prepare. This will create new sub-folders, check out the
current trunk, adjust the pom.xml files and download the documentation.
- Check everything. Check again.
- Delete your local Maven repository.
- 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.
- Make sure the build was successful. Make sure that there no warnings.
- Run ant pack. This will generate the release artifacts. You might be
asked for the passphrase of your private GPG key.
- The release folder should now contain all release artifacts. Check
them all carefully. Check again.
- If you are convinced that all artifacts are ok, upload all artifacts to
people.apache.org and let the Chemistry community know.
- If this is the first release candidate for this release, create a release
branch.
- Create a new release candidate tag.
Publishing The Release
Post Release Cleanup