Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 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:

...

  • 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.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 )

  • 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

...

...

  • 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.orgusers@kafka.apache.orgdev@kafka.apache.orgkafka-clients@googlegroups.com
  • Add the release data to https://reporter.apache.org/addrelease.html?kafka (must be a Kafka PMC member)

...