Space: Apache Connectors Framework 
(https://cwiki.apache.org/confluence/display/CONNECTORS)
Page: Release Process 
(https://cwiki.apache.org/confluence/display/CONNECTORS/Release+Process)


Edited by Karl Wright:
---------------------------------------------------------------------
h1. The ManifoldCF Release Process

ManifoldCF is a little harder to release than most software projects because it 
has a fair number of connectors which are conditionally compiled.  Thus, you 
cannot do a full release until the required dependencies are installed on your 
release machine.

Releases heretofore have been done on Windows (both US locale and Japan 
locale), and thus we feel that the release process is fairly robust for that 
platform.  Batch scripts have been created that ease the process mightily.  On 
Linux there has been no such development; if you like, you can be the first 
release engineer who wants to port the scripts.

h2. Branches and tags

For any release, there should be a release branch.  This branch should be 
created by the appropriate "svn copy" command from trunk.  For example:

{{svn copy}} {{[https://svn.apache.org/repos/asf/manifoldcf/trunk]}} 
{{[https://svn.apache.org/repos/asf/manifoldcf/branches/release-0.6-branch]}}

A major release will have its own release branch labeled with the release 
number (e.g. "release-0.6-branch").  A minor release will continue in the 
appropriate major release branch, and have the required changes pulled up from 
trunk one at a time.  Thus 0.6.1 would be released from "release-0.6-branch" 
also.

When the time comes to build a release candidate, the release engineer should 
make an appropriately-labeled copy of the release branch in the "tags" area.  
For instance:

{{svn copy}} 
{{[https://svn.apache.org/repos/asf/manifoldcf/branches/release-0.6-branch]}} 
{{[https://svn.apache.org/repos/asf/manifoldcf/tags/release-0.6-RC0]}}

When the release is finally completed, the appropriate tag is then renamed to 
be the release name, e.g.:

{{svn move}} 
{{[https://svn.apache.org/repos/asf/manifoldcf/tags/release-0.6-RC0]}} 
{{[https://svn.apache.org/repos/asf/manifoldcf/tags/release-0.6]}}

h2. Before releasing

Before you cut a release, it's always a good idea to run all the tests you can 
on the software.  Also necessary is a "rat" run, which detects unknown or 
incorrect licenses on source files.  See the complete checklist below.

# Download the dependencies for building and testing (ant make-core-deps 
make-deps).  You will need svn 1.7+ installed for this step.
# Check licenses (ant rat-sources).  You are interested in verifying that there 
are zero files with unapproved licenses.  (This comes at the very start of a 
long report.)
# Run standard integration tests (ant test-dr test-hs).  If you have PostgreSQL 
installed and MySQL, run those too (ant test-pg test-my).
# Run the UI tests (ant uitest).  You'll need Python 2.7\+ for these.

If everything looks good, you're ready to go ahead and cut the release\!

h2. Building ManifoldCF for release

NOTE: In order to proceed, you MUST have svn 1.7 or higher installed\!  The ant 
build scripts require this in order to be able to apply patches on Windows 
platforms.  On Windows, you will also need GnuPG installed (from 
[http://www.gnupg.org/download/]), and have your signing key created and 
installed (read this: [http://www.apache.org/dev/release-signing]). Also needed 
is the utility "pscp.exe".

The first step of the build process is to check out the release branch into a 
work area.  Technically it is more correct to check out the tag, but in 
practice that's not necessary because only the release engineer should be 
working on the release branch.  All other development should be taking place in 
trunk.

{{svn co}} {{[https://svn.apache.org/repos/asf/manifoldcf/release-0.6-branch]}} 
{{myworkarea}}

Then, check out the Windows release scripts also:

{{svn co}} {{[https://svn.apache.org/repos/asf/manifoldcf/release-scripts]}}

The release scripts perform all the required fetching of dependencies 
automatically, through ant.  But they do not know how to deal with proxies, so 
if you have a proxy you will need to figure out how to deal with that.

Next, you will need to create a place to put the release in your 
people.apache.org public_html area.  This directory should be named 
"apache-manifoldcf-<release_name>".  The release candidate will be copied there.

The next step is to fire off the release script itself.  You will need to 
supply your people.apache.org username also:

{{cd myworkarea}}
{{../release-scripts/release.bat 0.6 kwright}}

After being prompted a few times for your key file password, and for your 
people.apache.org password, your release candidate should be created and copied 
to an appropriate subdirectory in your user area on people.apache.org, e.g. 
[http://people.apache.org/~kwright/apache-manifoldcf-0.6].

Change your notification preferences: 
https://cwiki.apache.org/confluence/users/viewnotifications.action    

Reply via email to