[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