Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Streamline the process so that it's easier to upload the artifacts to home.apache.org and flesh out the upload instructions.

...

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

    0.10.0.0

    -rc0
  • put -r <localDir> kafka-0.10.0.0-rc0

Check 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

    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.

    ...

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

    ...