manifoldcf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Connectors Framework > Release Process
Date Tue, 14 Aug 2012 19:55:00 GMT
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.  Luckily, for packages
that are proprietary, stubs have been created which allow you to skip the installation of
proprietary libraries in order to create a release.

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.)  You will need
Apache Rat installed for this step.
# 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
   

Mime
View raw message