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.9.0 and the following development version will become 0.10.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.
mkdir 0.9.0.0_RELEASE
cd 0.9.0.0_RELEASE/
git clone https://git-wip-us.apache.org/repos/asf/kafka.git kafka
cd kafka
git checkout -b 0.9.0 origin/0.9.0
Check NOTICE and LICENSE files
Update version number
Prepare release notes
Prepare the release tag
git tag -a 0.9.0.0
git push --tags
Now make sure the log commit is the same of the tag you are sending out and that you checked out
fatal: Not a git repository (or any of the parent directories): .git
Now prepare the source (after getting your keys local to the box)
sign the artifact
( gpg --armor --output kafka-0.9.0.0-src.tgz.asc --detach-sig kafka-0.9.0.0-src.tgz
gpg --print-md MD5 kafka-0.9.0.0-src.tgz > kafka-0.9.0.0-src.tgz.md5
gpg --print-md SHA1 kafka-0.9.0.0-src.tgz > kafka-0.9.0.0-src.tgz.sha1
gpg --print-md SHA512 kafka-0.9.0.0-src.tgz > kafka-0.9.0.0-src.tgz.sha2 )
Validate the signatures:
You should see valid signatures and no errors, continue.
Make sure you have Gradle installed
Prepare java and scala docs.
Expose all the binary artifacts, release notes, java and scala doc through an URL
Go drop whatever staging repository may be in the maven repo
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
Voting:
Verify for voting:
gpg --import KEYS (KEYS can be obtained from http://kafka.apache.org/KEYS
)If need to roll a new RC
Post vote todo (after the vote passes):
For new releases: