...
- Make sure you are working with a clean repo (i.e. identical to upstream - no changes in progress). If needed clone a fresh copy
- git checkout trunk
- Check that current HEAD points to commit on which you want to base new release branch. Checkout particular commit if not.
- git branch 0.10.0
- git push apache 0.10.0
- Check that the branch was correctly propagated to Apache using the webui: https://git-wip-us.apache.org/repos/asf?p=kafka.git
- Modify the version in trunk to bump to the next one "0.10.1.0-SNAPSHOT" in gradle.properties, tests/kafkatest/__init__.py and kafka-merge-pr.py. Commit and push to trunk in apache.
- Create new Jenkins Build job that validates the new branch (Java 7 is enough)
Send email announcing the new branch:
No Format 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 Release Artifacts
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:
- Modify the version in 0.10.0 branch to remove "-SNAPSHOT" in gradle.properties, tests/kafkatest/__init__.py and kafka-merge-pr.py. Commit and push to 0.10.0 branch in apache.
- Prepare an RC 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"
- git reset --hard
- Push the tag to Apache:
- git push --tags
Prepare a workspace:
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
...
- 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 html release notes. The html version shows up at the bottom of the page. Save the release notes as RELEAE_NOTES.html
git tag -a 0.9.0.0
Upload the release notes to home.apache.org
Prepare the release tag
git push --tags
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
Validate the signatures:
- download the files you signed and uploaded
- gpg --verify kafka-0.10.0.0-src.tgz.asc kafka-0.10.0.0-src.tgz
You should see valid signatures and no errors, continue.
- make sure your java is on jdk 1.7
Make sure you have Gradle installed
- cd kafka-0.9.0.0-src
- gradle
- ./gradlew clean releaseTarGzAll
...
- Go to https://repository.apache.org/#stagingRepositories, find the uploaded artifacts and drop it.Drop the git tag for the release.
- Go back to the beginning - don't forget to bump the RC number.
...
- Remember: at least 3 days, 3 +1 from PMC members (committers are not enough!) and no -1.
- Merge the last version change / rc tag into the release branch
- Update version on the branch to 0.10.0.1
Send a vote closing email:
No Format 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
- 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)
...