This document describe the process to release apache Hadoop Ozone. The process is not yet scripted and the documentation is work in progress

Pre-Requisite

Release manager should have a gpg key setup to sign the artifacts. For more details refer below link. 

https://www.apache.org/dev/new-committers-guide.html#set-up-security-and-pgp-keys

Pre-Vote

Set up environment variables

export VERSION=0.4.0-alpha

export RELEASE_DIR=~/ozone-release/ (ozone-release needs to be created)

export CODESIGNINGKEY=your_gpg_key_id

Reset the git repository

git reset --hard

git clean -dfx

Update the versions

Use below command or use IDE to replace "0.4.0-SNAPSHOT" to "0.4.0-alpha".

find . -name pom.xml -type f | xargs sed -i 's/0.4.0-SNAPSHOT/0.4.0-alpha/g'


find . -name pom.xml -type f -print0 | xargs -0 sed -i '' 's/0.4.0-SNAPSHOT/0.4.0-alpha/g'

Commit the changes

git commit -am "commit updated ozone version"

Tag the repository

git tag -s ozone-$VERSION-RC0

Create the release artifacts

./hadoop-ozone/dev-support/checks/rat.sh
git reset --hard

git clean -dfx
mvn clean install -Dmaven.javadoc.skip=true -DskipTests -DskipShade -Psign,dist,src,hdds,hdds-src -Dtar -Dgpg.keyname=$CODESIGNINGKEY


cp hadoop-dist/target/hadoop-ozone-*-src-with-hdds.tar.gz $RELEASE_DIR/hadoop-ozone-$VERSION-src.tar.gz

cp hadoop-ozone/dist/target/ozone-$VERSION.tar.gz $RELEASE_DIR/hadoop-ozone-$VERSION.tar.gz

cd $RELEASE_DIR


Calculate the checksum and sign the artifacts

for i in $(ls -1 *.tar.gz); do gpg  -u ${CODESIGNINGKEY} --armor --output "${i}.asc" --detach-sig "${i}"; done

for i in $(ls -1 *.tar.gz); do sha512sum ${i} > ${i}.sha512; done

for i in $(ls -1 *.tar.gz); do gpg --print-mds ${i} > ${i}.mds; done

Upload the artifacts to somewhere

sftp home.apache.org
mkdir public_html
mkdir public_html/ozone-0.4.0-alpha-rc0/
cd public_html/ozone-0.4.0-alpha-rc0
mput *


Upload the artifacts to the apache nexus

Double check if your apache credentials are added to your local ~/.m2/settings.xml

<settings>
  <server>
      <id>apache.snapshots.https</id>
      <username>your_apache_id</username>
      <password>your_apache_password</password>
    </server>
    <!-- To stage a release of some part of Maven -->
    <server>
      <id>apache.releases.https</id>
      <username>your_apache_id</username>
      <password>your_apache_password</password>
	 </server>
</settings>

Do a maven deploy from the ozone and hdds projects

cd hadoop-ozone
mvn deploy
cd ../hadoop-hdds
mvn deploy

Go the the https://repository.apache.org and close the newly created hadoop repository (select the latest one which contains the hadoop in the name)

Push the tag to github

git push origin ozone-0.4.0-alpha-RC0

Note: You can push the tag as is and merge it to the branch in case of a successful vote.

Send the voting mail to below mailing list

  1. Hadoop Common <common-dev@hadoop.apache.org>
  2. Hdfs-dev <hdfs-dev@hadoop.apache.org>
  3. yarn-dev@hadoop.apache.org <yarn-dev@hadoop.apache.org>
  4. mapreduce-dev@hadoop.apache.org <mapreduce-dev@hadoop.apache.org>

Vote

After-Vote

Publish the artifacts

You should commit the artifacts to the SVN repository. If you are not a PMC member you can commit it to the dev zone first and ask a PMC for the final move:

Checkout the svn folder: https://dist.apache.org/repos/dist/dev/hadoop

And commit the artifacts to a new directory.

PMC members can move it to the final location:

svn mv https://dist.apache.org/repos/dist/dev/hadoop/ozone-0.3.0-alpha https://dist.apache.org/repos/dist/release/hadoop/ozone/ozone-0.3.0-alpha

To publish the artifacts to the central maven, login to the https://repository.apache.org, select your staging repository and Release it.

Write a haiku

Check the tag from the Ozone Road Map page (it's a national park).

Find a photo which is under the CC license.

Write a haiku to the photo with Future font.

Save it to add it to the announcement page.

Update the ozone and hadoop sites

This is documented here: How to generate and push ASF web site after HADOOP-14163

The same repository contains both the hadoop and the ozone sub-site.

In short:

  1. You need a new page like ozone/src/release/0.3.0-alpha.md
  2. You put the photo with the haiku to ozone/static/releases/
  3. Regenerate the site: cd ozone && hugo
  4. Create a shorter announcement to the hadoop site, such as src/news/2018-11-22-ozone-0.3.0-alpha.md
  5. Execute hugo on the root dir of the repository
  6. Go to the content subfolder, start a webserver (I use Caddy without a config but python -m http also works) and check the result

You also need to upload the docs folder. It should be copied from the binary artifact to content/ozone/docs/...

Please also update the content/ozone/current symbolic link

At the end: commit and push everything (including the changes under ./content)

Add the final git tag and push it

git checkout ozone-0.3.0-alpha-RC1

git tag -s ozone-0.3.0-alpha -m "HDDS-602. Ozone 0.3.0-alpha release"

git push ozone-0.3.0-alpha

Change the development version on the branch

1. Usually I push the release tags as is and merge them back to the version branch later:

git checkout ozone-0.3

git merge apache/ozone-0.3

git merge ozone-0.3.0-alpha

2. Restore the apache hadoop version and bump the ozone version:

find -name pom.xml -type f | xargs -n 1 sed -i 's/ozone-0.3.0-alpha/3.3.0-SNAPSHOT/g'

find -name pom.xml -type f | xargs -n 1 sed -i 's/0.3.0-alpha/0.3.1-SNAPSHOT/g'

3. Do a build and push the branch

Write an announcement mail to the hadoop mailing lists

Include general + user + all the dev mailing list