Introduction
This is an attempt to document the release procedure used for Wave whilst under incubation. These notes are not complete, so you will probably want to refer to the following documents:
- https://incubator.apache.org/guides/releasemanagement.html
- https://incubator.apache.org/guides/release-java.html
- https://www.apache.org/dev/release.html
And a good guide (used as the basis for this one) is produced by the Apache Commons project: - https://commons.apache.org/releases/prepare.html
- https://commons.apache.org/releases/release.html
Build Environment
The release procedure documented has been/is being carried out on 64-bit Linux machine using Ant and OpenJDK 1.6
Preparation
Make a release branch (optional)
This depends on how active the tree is at the time.
svn cp -m "Creating wave-0.3-release branch" \ https://svn.apache.org/repos/asf/incubator/wave/trunk \ https://svn.apache.org/repos/asf/incubator/wave/branches/wave-0.3-release
Then check out this branch, to do any release work needed.
Check Licensing
Ensure that all new source files have the Apache License attached, and any dependencies licenses are correctly noted in NOTICE.
Check export status of any cryptographic dependencies. (Unknown currently whether we need an ECCN or not)
Set version number in file
The version number is currently stored in build.properties in the waveinabox.version string.
Whilst the project is still incubating, the word 'incubating' must appear in the version string.
Build the release artefacts
Simply running
ant release
should be enough to build, run tests, and package as tar.bz2 and zips in the dist directory.
Manually inspect to ensure the 4 archives were all generated correctly:
- 'ant dist' works from the unpacked source archives
- Jar manifests contain LICENSE and NOTICE
- Jar manifests have the following properties:
Specification-Vendor Specification-Title Specification-Version Implementation-Vendor Implementation-Title Implementation-Version
TODO: Do we need Extension-Name, Implementation-Vendor-Id as well?
Make a Release Candidate
Bump version number
Adjust 'waveinabox.version' in build.properties. Do not include RC in the version number here.
Create CHANGES
I suggest using the following git log, to produce a one-line-per-change list of all commits.
(An alternative, would be to use the JIRA id's - but not everything goes through Jira (notably most of my stuff doesn't! ))
git log --pretty=medium
Put this the 'Full log' section.
I suggest hand-writing the 'Summary since X' at the start of the file.
Create RELEASE-NOTES
TODO: decide on a format
Refer to the notes used in the previous release for the format of how to write them.
Break at 80 chars as is conventional.
Include:
- Description of the project
- Any major changes (otherwise see CHANGES) Is this really needed given the summary in CHANGES?
- Any compatibility issues (and mention if none)
- Any upgrading procedures needed
- Make another note of the required Java version
Tag the RC
svn cp -m "Creating wave-0.3-rc1 tag" \ https://svn.apache.org/repos/asf/incubator/wave/branches/wave-0.3-release \ https://svn.apache.org/repos/asf/incubator/wave/tags/wave-0.3-rc1
Make the RC
Run
ant release
.
Check that the produced code still works! Check that source packages don't include any binaries.
Sign the release using your GPG key, and record SHA512 checksums for the files. (See my script at https://people.apache.org/~al/artefact-sign.sh).
Upload the src+bin tar+zip somewhere so that it can be found.
Either put in your space at https://people.apache.org/~name/, or make a folder and host in https://dist.apache.org/repos/dist/dev/incubator/wave.
Vote for release
Send a vote mail for RC
Send a message with subject 'VOTE Release Wave 0.3 based on RC1' email to wave-dev@incubator.apache.org.
Post links to the RC artefacts, the subversion tag it is based upon, RELEASE-NOTES so that the artefact doesn't have to be downloaded to see them.
Ensure that KEYS is available somewhere with the artefacts.
Check the voting guide for more information on how to count votes etc.
When posting the RESULT, note that (currently) all committers are also PPMC, so to prevent confusion list as PPMC in the result email.
(Incubator only) Vote for RC
Whilst Wave is still an incubating project, send a VOTE email to general@incubator.apache.org to get PMC votes. Handle in the same way as the internal vote.
Publish
TODO