0.9.0.0 and forward release notes with Gradle
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
Update version number
- If the code is still using a -SNAPSHOT version, remove it and commit the release version. (This will only happen during the first release candidate currently.)
Prepare release notes
- Go to JIRA, move all unresolved jiras with "Fix versions" of 0.9.0.0 to future releases.
- 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). The text version shows up at the bottom of the page.
Prepare the release tag
git tag -a 0.9.0.0
git push --tags
- make sure your java is on jdk 1.7
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.9.0.0-src
- cd kafka-0.9.0.0-src
- cp -r ../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.9.0.0-src.tgz kafka-0.9.0.0-src/
sign the artifact
( gpg --armor --output kafka-0.9.0.0-src.tgz.asc --detach-sig kafka-0.9.0.0-src.tgzgpg --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 )
- upload the artifacts to where you are staging them
- check they are there
Setup another clean room
- vagrant up
- vagrant ssh
- download the files you signed and uploaded
- gpg kafka-0.9.0.0-src.tgz.asc
- /vagrant/scripts/verify.sh kafka-0.9.0.0-src.tgz
You should see valid signatures and no errors, if errors go back
- Gradle must be installed http://www.gradle.org/installation (ubuntu apt-get http://askubuntu.com/questions/328178/gradle-in-ubuntu)
sudo add-apt-repository ppa:cwchien/gradle
sudo apt-get update
sudo apt-get install gradle
- wget wget https://people.apache.org/~etc/candidate/src.tgz
- tar -xvf kafka-0.9.0.0-src.tgz
- cd kafka-0.9.0.0-src
- gradle
- ./gradlew clean
- cp your private gradle.properties to ~/.gradle
make sure JDK 7 is installed, setup your gradle.properties correctly (see README.md)
- ./gradlew releaseTarGzAll
- cd core/build/distributions/
- /vagrant/scripts/sign.sh kafka_2.10-0.9.0.0.tgz
- /vagrant/scripts/sign.sh kafka_2.11-0.9.0.0.tgz
Prepare java and scala docs.
- copy the javadoc and scaladoc directories over
Expose all the binary artifacts, release notes, java and scala doc through an URL
- The easiest way is to sftp them over to home.apache.org/public_html using your apache id.
Go drop whatever staging repository may be in the maven repo
- If you haven't set up gpg key, set up one using 4096 bit RSA (http://www.apache.org/dev/release-signing.html). Make sure that your public key is uploaded to one of the public servers (http://www.apache.org/dev/release-signing.html#keyserver). Also, add your public key to https://svn.apache.org/repos/asf/kafka/site/KEYS.
- Set up ~/.gradle.properties like the following. Make sure that you can login to https://repository.apache.org/ with your apache id/passwd. The value for signing.keyId can be found by running "gpg --list-secret-keys --fingerprint". The number after the / in the first line is your signing.keyId.
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
- cd ../../../
- ./gradlew uploadArchivesAll
- Go to https://repository.apache.org/#stagingRepositories, find the uploaded artifacts and close this (don't promote until the vote passes). The artifacts should show up under https://repository.apache.org/content/groups/staging/.
Voting:
- 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).
Verify for voting:
gpg --import KEYS (KEYS can be obtained from http://kafka.apache.org/KEYS
)- 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
- Go to https://repository.apache.org/#stagingRepositories, find the uploaded artifacts and drop this.
- Drop the git tag for the release.
- Go back to the beginning.
Post vote todo (after the vote passes):
- Upload all artifacts, release notes, and docs to https://dist.apache.org/repos/dist/release/kafka (an svn repo, using Apache committer id/passwd)
- Go to https://repository.apache.org/#stagingRepositories, find the uploaded artifacts and release this (this will push to maven central)
- Wait for about a day for the artifacts to show up in apache mirror and maven central.
- Send out an announcement email. You will need to use your apache email address to send out the email (otherwise, it won't be delivered to announce@apache.org).
- Log into people.apache.org with your apache id.
- Include a paragraph in the announcement email like: "According to git shortlog <number_of_contributors> people contributed to this release: <contributors>" where:
- number_of_contributors is determined via `git shortlog -sn --no-merges <previous_release_tag>..<current_release_tag> | wc -l` (eg `git shortlog -sn --no-merges 0.8.2.2..0.9.0.0 | wc -l`)
- contributors is determined via: `git shortlog -sn --no-merges <previous_release_tag>..<current_release_tag> | cut -f2 | tr '\n' ',' | sed -e 's/,/, /g'` (eg `git shortlog -sn --no-merges 0.8.2.2..0.9.0.0 | cut -f2 | sort --ignore-case | tr '\n' ',' | sed -e 's/,/, /g'`)
- cat mail.txt|mail -s "[ANNOUCE] ..." announce@apache.org, users@kafka.apache.org, dev@kafka.apache.org, kafka-clients@googlegroups.com
- Add the release data to https://reporter.apache.org/addrelease.html?kafka (must be a Kafka PMC member)
Website update process:
For new releases:
- Git clone https://git-wip-us.apache.org/repos/asf/kafka-site.git
- checkout the branch asf-site
- The releaseTarGzAll target should auto-generate the configuration docs for broker/producer/consumer in ./core/build/distributions/kafka_2.10-0.9.0.0-site-docs.tgz. Untar the file in 090/.
- Copy release javadoc to newly 090/.
- Update documentation.html to include the new documentation link (090/documentation.html).
- Update downloads.html to include the new download links from mirrors and change last release to use archive.
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 http://svn.apache.org/repos/asf/kafka/KEYS
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 http://vagrantup.com
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
- add the html version of release notes
vi RELEASE-NOTES.html
Go to Apache JIRA and click on the version X.Y.Z
(i.e. https://issues.apache.org/jira/browse/KAFKA/fixforversion/12317243)
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 https://github.com/mumrah/kafka-ivy 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 https://dist.apache.org/repos/dist 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