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. Name: chemistry-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. Name: chemistry-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: