This document gives step-by-step instructions for publishing a release. These instructions assume that the component uses Maven to build the site.
The starting point for this document is that a release candidate has been created and a [VOTE] successfully passed. Guidelines for these preparations can be found here.
In particular, it is assumed:
The distribution area of commons releases is populated from https://dist.apache.org/repos/dist/release/commons/ via svnpubsub. In order to publish the release, you must move the distributions files from dev to release.
You can perform multiple svn mv operations (with or without local working copies) or you can use svnmucc, for example:
svnmucc -U https://dist.apache.org/repos/dist \ rm release/commons/foo/RELEASE-NOTES.txt \ mv dev/commons/foo/RELEASE-NOTES.txt release/commons/foo/RELEASE-NOTES.txt \ mv dev/commons/foo/binaries/commons-foo-1.2-bin.tar.gz release/commons/foo/binaries/commons-foo-1.2-bin.tar.gz \ mv dev/commons/foo/binaries/commons-foo-1.2-bin.tar.gz.asc release/commons/foo/binaries/commons-foo-1.2-bin.tar.gz.asc \ mv dev/commons/foo/binaries/commons-foo-1.2-bin.tar.gz.md5 release/commons/foo/binaries/commons-foo-1.2-bin.tar.gz.md5 \ mv dev/commons/foo/binaries/commons-foo-1.2-bin.tar.gz.asc release/commons/foo/binaries/commons-foo-1.2-bin.tar.gz.asc \ mv dev/commons/foo/binaries/commons-foo-1.2-bin.zip release/commons/foo/binaries/commons-foo-1.2-bin.zip \ mv dev/commons/foo/binaries/commons-foo-1.2-bin.zip.asc release/commons/foo/binaries/commons-foo-1.2-bin.zip.asc \ mv dev/commons/foo/binaries/commons-foo-1.2-bin.zip.md5 release/commons/foo/binaries/commons-foo-1.2-bin.zip.md5 \ mv dev/commons/foo/binaries/commons-foo-1.2-bin.zip.asc release/commons/foo/binaries/commons-foo-1.2-bin.zip.asc \ mv dev/commons/foo/source/commons-foo-1.2-src.tar.gz release/commons/foo/source/commons-foo-1.2-src.tar.gz \ mv dev/commons/foo/source/commons-foo-1.2-src.tar.gz.asc release/commons/foo/source/commons-foo-1.2-src.tar.gz.asc \ mv dev/commons/foo/source/commons-foo-1.2-src.tar.gz.md5 release/commons/foo/source/commons-foo-1.2-src.tar.gz.md5 \ mv dev/commons/foo/source/commons-foo-1.2-src.tar.gz.asc release/commons/foo/source/commons-foo-1.2-src.tar.gz.asc \ mv dev/commons/foo/source/commons-foo-1.2-src.zip release/commons/foo/source/commons-foo-1.2-src.zip \ mv dev/commons/foo/source/commons-foo-1.2-src.zip.asc release/commons/foo/source/commons-foo-1.2-src.zip.asc \ mv dev/commons/foo/source/commons-foo-1.2-src.zip.md5 release/commons/foo/source/commons-foo-1.2-src.zip.md5 \ mv dev/commons/foo/source/commons-foo-1.2-src.zip.asc release/commons/foo/source/commons-foo-1.2-src.zip.asc \ -m "Publish commons-foo 1.2 Release"
cd binaries ln -s README.html ../README.html ln -s HEADER.html ../HEADER.html cd ../source ln -s README.html ../README.html ln -s HEADER.html ../HEADER.html
Then update the latest release number in README.html. Please also read through and correct any mistakes you find and fix other items (eg. urls) which need updating.
Check KEYS file
Login to the Nexus web interface, select your staging repository and promote it.
The files placed here will be mirrored (after some delay) to the public distribution repository on http://repo.maven.apache.org/maven2/.
Copy the release candidate tag in subversion to a name without RC in its name:
svn cp -m "Release commons foo 1.2 based on RC 1" \ https://svn.apache.org/repos/asf/commons/proper/foo/tags/foo-1.2-RC1 \ https://svn.apache.org/repos/asf/commons/proper/foo/tags/foo-1.2
Make sure you have the latest changes on the master branch and the release branch:
git checkout release git pull origin master git pull origin release
Now create the final tag, bump the version number to the next development version, commit the new version and merge the release branch back into the master branch, so that the master branch also has the new development version:
git tag -s foo-1.2 -m "Create Commons foo 1.2 release tag" mvn versions:set -DnewVersion=1.3-SNAPSHOT -DgenerateBackupPoms=false git commit -am "Bump to next development version" git checkout master git merge release git push
Wait until the release files are available from the main Apache web site (http://www.apache.org/dist/commons/foo/), then confirm things are good.
Check the main directory:
Follow the links to the binaries and source directories. Check them in a similar manner.
Announce the availability of the new release.
Please remember to give a brief description of your component. Please also remember to remind people about verifying the signatures. The subject should be something like [ANNOUNCEMENT] Foo 1.2 Released. Send this mail from your Apache account. Please spell check the document!
Wait to send the release announcement until you have verified that
The release announcement should go to (at least) the following mailing lists:
That's it! The release is out there - but there is still some tidying up to be done.