This document describes how to release Apache Kafka from trunk.
It is a work in progress and should be refined by the Release Manager (RM) as they come across aspects of the release process not yet documented here.
NOTE: For the purpose of illustration, this document assumes that the version being released is 0.10.0.0 and the following development version will become 0.10.1.0.
Vote on release plan: Release manager should start a vote in dev@kafka.apache.org, asking the community to approve the release plan.
To: dev@kafka.apache.org Subject: [VOTE] Release plan - Kafka 0.10.0 We are starting the process to prepare for Kafka $release release. I have created release plan ($link) to cover the tasks under this release. If you have any JIRA in progress and would like to include it in this release, please follow the process to do so. Feel free to comment on the JIRA if you have any comments/suggestions. Thanks, $RM |
Go over JIRA for the release and make sure that blockers are marked as blockers and non-blockers are non-blockers. This JIRA filter may be handy:
project = KAFKA AND fixVersion = 0.10.0.0 AND resolution = Unresolved AND priority = blocker ORDER BY due ASC, priority DESC, created ASC |
It is important that between the time that the release plan is voted to the time when the release branch is created, no experimental or potentially destabilizing work is checked into the trunk. While it is acceptable to introduce major changes, they must be thoroughly reviewed and have good test coverage to ensure that the release branch does not start of being unstable. If necessary the RM can discuss if certain issues should be fixed on the trunk in this time, and if so what is the gating criteria for accepting them.
Send email announcing the new branch:
To: dev@kafka.apache.org Subject: New release branch 0.10.0 Hello Kafka developers and friends, As promised, we now have a release branch for 0.10.0 release (with 0.10.0.0 as the version). Trunk has been bumped to 0.10.1.0-SNAPSHOT. I'll be going over the JIRAs to move every non-blocker from this release to the next release. From this point, most changes should go to trunk. *Blockers (existing and new that we discover while testing the release) will be double-committed. *Please discuss with your reviewer whether your PR should go to trunk or to trunk+release so they can merge accordingly. *Please help us test the release! * Thanks! $RM |
Create a release tag - because our release branch is still 0.10.0.0-SNAPSHOT but our release artifact needs to be 0.10.0.0, we'll make the change in a tag:
git tag -a 0.10.0.0-rc0 (this will tag the version change commit, get the rc part to match the actual rc number)
Move the branch head back, so future commits will still have "-SNAPSHOT"
Prepare a workspace:
mkdir 0.10.0.0_RELEASE
cd 0.10.0.0_RELEASE/
git clone https://git-wip-us.apache.org/repos/asf/kafka.git kafka
cd kafka
git checkout -b 0.10.0 tags/0.10.0.0-rc0 <- important! checkout the tag, or you'll be releasing SNAPSHOT accidentally.
Check NOTICE and LICENSE files
Prepare release notes
Run ./release_notes.py 0.10.0.0 > ../kafka-0.10.0.0-rc0/RELEASE_NOTES.html. It will fail if you have any unresolved JIRAs still in the release, listing the JIRAs that still need to be addressed. Otherwise, double check that the output in RELEASE_NOTES.html looks ok for the release
Prepare the source artifact
git archive --format tar.gz --prefix kafka-0.10.0.0-src/ -o ../kafka-0.10.0.0-rc0/kafka-0.10.0.0-src.tgz 0.10.0.0-rc0
Prepare the binary artifacts and aggregated javadoc
Sign the artifacts
for file in *.tgz; do gpg --armor --output $file.asc --detach-sig $file; done
for file in *.tgz; do gpg --verify $file.asc $file; done
for file in *.tgz; do gpg --print-md md5 $file > $file.md5; done
for file in *.tgz; do gpg --print-md sha1 $file > $file.sha1; done
for file in *.tgz; do gpg --print-md sha512 $file > $file.sha2; done
Upload all the binary artifacts, release notes, javadoc to your home.apache.org URL
Upload artifacts to Maven staging repository
mavenUrl=https://repository.apache.org/service/local/staging/deploy/maven2
mavenUsername=your-apache-id
mavenPassword=your-apache-passwd
signing.keyId=your-gpgkeyId
signing.password=your-gpg-passphrase
signing.secretKeyRingFile=/Users/your-id/.gnupg/secring.gpg
For new releases:
Send out a voting email to users@kafka.apache.org, dev@kafka.apache.org, kafka-clients@googlegroups.com. In the email, include the git revision next to the git tag (since tag will be dropped when rolling out a new RC).
To: dev@kafka.apache.org Subject: [VOTE] 0.10.0.0 RC0 Hello Kafka users, developers and client-developers, This is the first candidate for release of Apache Kafka 0.10.0.0. This is a major release that includes: (1) New message format including timestamps (2) client interceptor API (3) Kafka Streams. Since this is a major release, we will give people more time to try it out and give feedback. Release notes for the 0.10.0.0 release: http://home.apache.org/~gwenshap/kafka-0.10.0.0-rc0/RELEASE_NOTES.HTML *** Please download, test and vote by Monday, March 28, 9am PT Kafka's KEYS file containing PGP keys we use to sign the release: http://kafka.apache.org/KEYS * Release artifacts to be voted upon (source and binary): http://home.apache.org/~gwenshap/kafka-0.10.0.0-rc0/ * Maven artifacts to be voted upon: https://repository.apache.org/content/groups/staging/ * java-doc http://home.apache.org/~gwenshap/kafka-0.10.0.0-rc0/javadoc/ * tag to be voted upon (off 0.10.0 branch) is the 0.10.0.0 tag: https://git-wip-us.apache.org/repos/asf?p=kafka.git;a=tag;h=72fd542633a95a8bd5bdc9fdca56042b643cb4b0 * Documentation: http://kafka.apache.org/0100/documentation.html * Protocol: http://kafka.apache.org/0100/protocol.html /************************************** Thanks, Gwen |
gpg --import KEYS (KEYS can be obtained from http://kafka.apache.org/KEYS
)Send a vote closing email:
To: dev@kafka.apache.org Subject: [RESULTS] [VOTE] Release Kafka version 0.10.0.0 This vote passes with 8 +1 votes (4 bindings) and no 0 or -1 votes. +1 votes PMC Members: * $Name * $Name To: dev@kafka.apache.org Subject: [RESULTS] [VOTE] Release Kafka version 0.10.0.0 This vote passes with 7 +1 votes (3 bindings) and no 0 or -1 votes. +1 votes PMC Members: * $Name * $Name * $Name Committers: * $Name * $Name Community: * $Name * $Name 0 votes * No votes -1 votes * No votes Vote thread: http://markmail.org/message/faioizetvcils2zo I'll continue in the release process and announce a release in the next few days. $RM |
# Optionally change KEYS file in case that you've added your key for the first time
svn commit -m "Release 0.10.0.0"