Child pages
  • Release Process
Skip to end of metadata
Go to start of metadata

0.8.2 and forward release notes with Gradle

Go to JIRA, select roadmap from left panel, click on "release notes" next to the release version and prepare/format the txt release notes (configure to change from html)

  • git tag -a

  • git push --tags

Setup a little clean room

Now make sure the log commit is the same of the tag you are sending out and that you checked out

  • cd
  • mkdir kafka-0.8.2-src
  • cd kafka-0.8.2-src
  • cp -r ~/apache/kafka/* .
  • git status

fatal: Not a git repository (or any of the parent directories): .git

  • if you did not get this you messed up somewhere please go back.

Now prepare the source (after getting your keys local to the box)

  • cd ..
  • tar -zcvf kafka-0.8.2-src.tgz kafka-0.8.2-src/
  • /vagrant/scripts/ kafka-0.8.2-src.tgz
    ( gpg --armor --output kafka-0.8.2-src.tgz.asc --detach-sig kafka-0.8.2-src.tgz

      gpg --print-md MD5 kafka-0.8.2-src.tgz > kafka-0.8.2-src.tgz.md5

      gpg --print-md SHA1 kafka-0.8.2-src.tgz > kafka-0.8.2-src.tgz.sha1

      gpg --print-md SHA512 kafka-0.8.2-src.tgz > kafka-0.8.2-src.tgz.sha2 )

  • upload the artifacts to where you are staging them
  • check they are there
  • exit
  • vagrant destroy

Setup another clean room

  • vagrant up
  • vagrant ssh
  • download the files you signed and uploaded
  • gpg kafka-0.8.1-src.tgz.asc 
  • /vagrant/scripts/ kafka-0.8.1-src.tgz

You should see valid signatures and no errors, if errors go back

make sure JDK 6 is installed if Kafka version <= 0.8.2.x, otherwise JDK 7 should be installed, setup your correctly (see

  • ./gradlew releaseTarGzAll
  • cd core/build/distributions/
  • /vagrant/scripts/ kafka_2.9.1-0.8.2.tgz
  • /vagrant/scripts/ kafka_2.9.2-0.8.2.tgz
  • /vagrant/scripts/ kafka_2.10-0.8.2.tgz
  • /vagrant/scripts/ kafka_2.11-0.8.2.tgz

Prepare java and scala docs.

  • copy the javadoc and scaladoc directories over

Go drop whatever staging repository may be in the maven repo


Check sbt


Verify for voting:

  • gpg --import KEYS (KEYS can be obtained from
  • gpg --verify foo-1.0.tar.gz.asc foo-1.0.tar.gz
  • Test at least quickstart and unit tests for all scala versions.

If need to roll a new RC

 Post vote todo (after the vote passes):

  Website update process:

  For major releases:

  • Create a new release directory (say 09X) in kafa-site git repo.
  • Copy kafka-code/docs/*  pages to newly created directory (kafka-site/09X).
  • Auto-generate the configuration docs for broker/producer/consumer and update configuration.html (kafka-site/09X/configuration.html)
    Commands to auto-generate config pages:
            java -classpath kafka-clients-0.X.X.X-SNAPSHOT.jar org.apache.kafka.clients.producer.ProducerConfig
            java -classpath kafka-clients-0.X.X.X-SNAPSHOT.jar org.apache.kafka.clients.consumer.ConsumerConfig
            java -classpath kafka-clients-0.X.X.X-SNAPSHOT.jar:kafka_2.10-0.X.X.X-SNAPSHOT.jar:scala-library-2.10.5.jar kafka.server.KafkaConfig
  • Copy release javadoc to newly created directory (kafka-site/09X).
  • Update kafka-site/documentation.html to include the new documentation link (kafka-site/09X/documentation.html).
  • Update kafka-site/downloads.html to include the new download links from mirrors and change last release to use archive.

  For bug-fix releases:
  • Update kafka-site/downloads.html to include the new download link from mirrors and change last release to use archive.
  • If any doc changes, copy kafka-code/docs/* pages to major release directory ( kafka-site/09X).
  • If any config doc changes, auto-generate the configuration docs and update configuration.html (kafka-site/09X/configuration.html) as described in the instructions for major releases above.
  • If any javadoc changes, copy release javadoc to major release directory (kafka-site/09X).


0.8.0 and below with SBT


0) Make sure you are using JDK 6
1) Your Key needs to be signed into the KEYS file
2) clone the repository to kafka-X.Y.Z-src
3) checkout the branch to release if releasing not off trunk
4) java -jar ../../apache-rat-0.8/apache-rat-0.8.jar (forgot to-do this in rc1,2,3 will do before running 4)
5) tag the branch and append (git tag -a releaseVersion) the "release notes" from JIRA
6) git push --tags
7) now get rid of git, rm -fr .git/* && rmdir .git && rm -f .gitignore
8) cd ..
9) tar -czvf kafka-X.Y.Z-src.tgz kafka-X.Y.Z-src/*
10) sign the src

  • gpg --print-md MD5 kafka_X.Y.Z-src.tgz > kafka_X.Y.Z-src.tgz.md5
  • gpg --armor --output kafka_X.Y.Z-src.tgz.asc --detach-sig kafka_X.Y.Z-src.tgz
  • gpg --print-md SHA1 kafka_X.Y.Z-src.tgz > kafka_X.Y.Z-src.tgz.sh1

11) scp kafka_X.Y.Z-src* to a folder on a web server
12) ssh in a virtual machine, been using
13) wget the file
14) tar -xvf kafka-X.Y.Z-src.tgz
15) verify signings and hashes
16) run quick start
17) cd kafka-X.Y.Z-src && ./sbt release-tar
18) sign the binary

  • gpg --print-md MD5 kafka_2.N.0-X.Y.Z.tar.gz > kafka_2.N.0-X.Y.Z.tar.gz.md5
  • gpg --armor --output kafka_2.N.0-X.Y.Z.tar.gz.asc --detach-sig kafka_2.N.0-X.Y.Z.tar.gz
  • gpg --print-md SHA1 kafka_X.Y.Z-src.tgz > kafka_X.Y.Z-src.tgz.sh1
  • gpg --print-md SHA512 kafka_X.Y.Z-src.tgz > kafka_X.Y.Z-src.tgz.sh2

19) create file RELEASE_NOTES.html

  1. add the html version of release notes
    vi RELEASE-NOTES.html
    Go to Apache JIRA and click on the version X.Y.Z
    Click Release Notes

20) upload files to directory for voting
21) ./sbt "++2.8.0 publish"
22) ./sbt "++2.8.2 publish"
23) ./sbt "++2.9.1 publish"
24) ./sbt "++2.9.2 publish"
25) ./sbt "++2.10.1 publish"
26) run and see where we are 
27) close nexus staging if everything checks out
28) call VOTE
29) if VOTE failure then DROP staged artifacts from Nexus, if VOTE success then RELEASE artifacts to Maven Central
30) VOTE Succeeded, more to-dos
a) in copy new artifacts into X.Y.Z folder and remove previous releases folder (all older releases are in archive)
b) change site to include the new download link from mirrors and change last release to use archive
c) send ANNOUNCE to apache, users and dev lists

  • No labels


  1. Thanks, Joe. Do steps 21-25 publish to maven central repo? If so, should these be done after vote is closed?

    1. 21-25 publishes to apache staging repo only. Once the vote is closed successfully it is another button in nexus to push to "promote" the staged artifacts to maven central. This first step is important because it puts the artifacts in a maven repo for people to try out prior it to going to maven central and then ships exactly what was voted upon. After uploading you have to close what you uploaded for it to get staged to make sure there are no errors in the pom and such (which are not checked during the upload process) ...