This page is deprecated please see New Release Process in GitHub
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 are also scripts which have been used for one release.
Preparing release branch
Since this process has been error-prone and is no longer even remotely automatic (due to the unreliability of mvn versions:set), I've written scripts that do the work. Specifically:
...
The first script makes a copy of trunk and copies it to "branches/release-<version>-branch". It modifies build.xml, CHANGES.txt, and all the pom.xml files on both branch and trunk. The second script operates on an existing release branch to mark a bug fix release. It updates build.xml, CHANGES.txt, and all the pom.xml files on "branches/release-<major-version>-branch". Both scripts can be found in svn under https://svn.apache.org/repos/asf/manifoldcf/release-scripts .
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.
...
If everything looks good, you're ready to go ahead and cut the release!
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. 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).
...
Your release candidate should be created, copied, and committed to an appropriate subdirectory of the dist/dev/manifoldcf area.
Calling the vote
Once the artifact has been uploaded to people.apache.org, you should call a vote to release the artifact. This involves sending an email to dev@manifoldcf.apache.org, with the title "[VOTE] Release Apache ManifoldCF xxxx RCnnn". In the vote email, mention where the artifacts can be downloaded from (https://dist.apache.org/repos/dist/dev/manifoldcf/apache-manifoldcf-xxxx), as well as the full svn URL of the tag you created (https://svn.apache.org/repos/asf/manifoldcf/tags/release-xxxx-RCnnnn). The vote must have three +1's from committers, and must be open at least 72 hours.
If the vote does not pass
If the vote does not pass, this usually implies that fixes will be made and a new RC created. Fixes usually are committed to trunk first and then pulled up into the release branch using the "svn merge" command, e.g. "svn merge -c ZZZZ https://svn.apache.org/repos/asf/manifoldcf/trunk". Before the creating of the next RC, you should svn move the old artifacts from the apache-manifoldcf-XXX directory to apache-manifoldcf-XXX-RCnnnn. Then, upload the new RC as before.
If the vote passes
When the vote passes, you should "svn move" the artifacts from the dist/dev area directly into the dist/release area. DO NOT REGENERATE THE ARTIFACTS - the community has voted on them and they are the only legal copies you should distribute:
...