...
mkdir 0.10.0.0_RELEASE
cd 0.10.0.0_RELEASE/
- mkdir artifacts
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.
Prepare a public release staging area:
Check NOTICE and LICENSE files
- Make sure the NOTICE file has the correct year
Prepare release notes
- Go to JIRA, move all unresolved jiras with "Fix versions" of 0.10.0.0 to future releases.
Run ./release_notes.py
The easiest way is to sftp (lftp is an alternative that is more fully featured) them over to home.apache.org/public_html using your apache id:- sftp <apache_id>@home.apache.org
- mkdir public_html (this only needs to be done the first time) mkdir kafka-
- put -r <localDir> kafka-0.10.0.0-rc0
0.10.0.0
-rc0Check NOTICE and LICENSE files
- Make sure the NOTICE file has the correct year
Prepare release notes
...
> ../artifacts/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
...
Upload the release notes to home.apache.org
-src/ -o ../artifacts/kafka-0.10.0.0-src.tgz 0.10.0.0-rc0
Prepare the binary artifacts and aggregated javadoc
- Make sure your java is on jdk 1
Now prepare the source and release (after making sure you have gpg keys to sign the artifacts):
- make sure your java is on jdk 1.7 (On mac: export JAVA_HOME=$(/usr/libexec/java_home -v 1.7))
git archive --format tar.gz --prefix kafka-0.10.0.0-src/ -o ../kafka-0.10.0.0-src.tgz 0.10.0.0-rc3
- Make sure you have Gradle installed
- gradle
- ./gradlew clean releaseTarGzAll
- Make sure you have Gradle installed
- gradle
- ./gradlew clean releaseTarGzAll aggregatedJavadoc
- cp core/build/distributions/* ../artifacts
- cp -R build/docs/javadoc ../artifacts
Sign the artifacts
- Make sure you have gpg keys to sign the release artifacts
- Sign the artifacts:
- cd ../artifacts
- cp core/build/distributions/* ../
- sign the artifacts:
- Run the following commands (you may have to specify the gpg key to use via the `-u` option if you have multiple keys):
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
- Run the following commands (you may have to specify the gpg key to use via the `-u` option if you have multiple keys):
Upload all the binary artifacts, release notes, javadoc to your home.apache.org URL.
- The easiest way is to sftp (lftp is a more fully featured alternative) them over to home.apache.org/public_html using your apache id:
- sftp <apache_id>@home.apache.org
- mkdir public_html (this only needs to be 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
Prepare the aggregated javadoc.
- ./gradlew clean aggregatedJavadoc
- the first time)
- mkdir kafka-0.10.0.0-rc0
- put -r artifacts/* kafka-0.10.0.0-rc0
Upload artifacts to Maven staging repositoryUpload all the binary artifacts, release notes, java and scala doc to your home.apache.org URL.
- Go drop whatever staging repository may be is in the maven repo (if any): https://repository.apache.org/#stagingRepositories
- Make sure you have your gpg keys (see Prerequisites section for specifics)
- 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.
...
- ./gradlew uploadArchivesAll
- Go to https://repository.apache.org/#stagingRepositories, find the uploaded artifacts and close the staging repository (don't promote until the vote passes). The artifacts should show up under https://repository.apache.org/content/groups/staging/.
Website update process:
For new releases:
...
- 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
- Create a new tag for the release, on the same commit as the voted rc tag:
- Use "git show 0.10.0.0-rc6" to find the commit hash of the tag
- git tag -a 0.10.0.0 <commit hash>
- 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
- Close JIRA version
- Upload all artifacts, release notes, and docs to https://dist.apache.org/repos/dist/release/kafka (an svn a SVN repo, using Apache committer id/passwd)
- svn co https://dist.apache.org/repos/dist/release/kafka kafka-release
- create a new directory for the release (for example kafka-release/0.10.0.0)
- copy the release artifacts from the latest RC (the ones who were in your people.apache.org directory) to the new release directory
- Add the directory to SVN: svn add 0.10.0.0
# Optionally change KEYS file in case that you've added your key for the first time
svn commit -m "Release 0.10.0.0"
- 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)
...