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 have been implemented.
Build Environments
OpenCMIS is built and released with Maven2 and uses the Apache POM version 7 .
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:
<artifactId>-<version>-javadoc.<ext>
- POM:
<artifactId>-<version>.pom
- Main artifact:
- 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-<version>-source-release.<ext>
- A package containing offline HTML documentation and the full javadocs:
- Package formats: tar.gz and zip.
- Name:
chemistry-opencmis-<version>-docs.<ext>
- A client distribution bundle with all the client related JARs:
- Package formats: tar.gz and zip.
- Name:
chemistry-opencmis-dist-<version>-client.<ext>
- A client bundle (as above) with OpenCMIS Client JARs and all dependencies.
- Package formats: tar.gz and zip.
- Name:
chemistry-opencmis-client-impl-<version>-with-dependencies.<ext>
- A bundle containing the OpenCMIS server WARs and support
- Package formats: tar.gz and zip.
- Name:
chemistry-opencmis-dist-<version>-server.<ext>
- A bundle containing all OpenCMIS server related WARs (inmemory, fileshare, browser)
- Package formats: tar.gz and zip.
- Name:
chemistry-opencmis-dist-<version>-server-webapps.<ext>
- A source-release bundle containing all files the sources necessary to build all other artifacts.
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 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-<version>-RC<number>
.
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-<version>-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<number>" will be attached to the version number of the release candidate artifacts, where <number> 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 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 as 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 http://repo1.maven.org/maven2
- release candidate commodity packages are synced (together with their checksum and signatures) to http://www.apache.org/dist/incubator/chemistry
- maven site is synced to http://incubator.apache.org/chemistry/maven-site/ and back-linked from http://incubator.apache.org/chemistry/index.html
- project version at http://incubator.apache.org/chemistry/index.html is updated
- release tag is renamed to final version
- release branch is created
- Release is closed in https://issues.apache.org/jira/secure/project/ManageVersions.jspa?pid=12310936
- Release is announced to
general@incubator.apache.org chemistry-dev@incubator.apache.org
Post Release Cleanup
- Remove release candidate artifacts and sites