Versions Compared

Key

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

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

Code Block
languagebash
themeRDark
titleExport Vars
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

Code Block
languagebash
themeRDark
titleReset the Git Repo
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".

Code Block
languagebash
themeRDark
titleUpdate the Versions (Linux)
find . -name pom.xml -type f | xargs sed -i 's/0.4.0-SNAPSHOT/0.4.0-alpha/g'
Code Block
languagebash
themeRDark
titleUpdate the Versions (Mac)
find . -name pom.xml -type f -print0 | xargs -0 sed -i '' 's/0.4.0-SNAPSHOT/0.4.0-alpha/g'

Commit the changes

Code Block
languagebash
themeRDark
titleCommit the version changes
git commit -am "commit updated ozone version"

Tag the repository

Code Block
languagebash
themeRDark
titleTag the Release
git tag -s ozone-$VERSION-RC0

Create the release artifacts

  • Run rat check
Code Block
languagebash
themeRDark
titleRun RAT Check
./hadoop-ozone/dev-support/checks/rat.sh
  • Clean the Repo of all Rat output
Code Block
languagebash
themeRDark
titleReset the Git Repo
git reset --hard

git clean -dfx
  • Build the Release Tarballs.
Code Block
languagebash
themeRDark
titleBuild Ozone
mvn clean install -Dmaven.javadoc.skip=true -DskipTests -Psign,dist,src -Dtar -Dgpg.keyname=$CODESIGNINGKEY
  • Now that we have build the release artifacts, we will copy them to the release directory.
Code Block
languagebash
themeRDark
titleCopy to Release Directory
cp hadoop-ozone/dist/target/hadoop-ozone-*.tar.gz $RELEASE_DIR/hadoop-ozone-$VERSION-src.tar.gz

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

cd $RELEASE_DIR

Calculate the checksum and sign the artifacts

Code Block
languagebash
themeRDark
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

  •  Upload everything from the $RELEASE_DIR to your apache home with sftp
Code Block
languagebash
themeRDark
titleFTP to the apache server
sftp home.apache.org
  • Create a directory called "public_html" if it does not exist.
Code Block
languagebash
themeRDark
titleCreate public_html
mkdir public_html
  • Create the Release Directory
Code Block
languagebash
themeRDark
titleCreate the Release Directory under public_html
mkdir public_html/ozone-0.4.0-alpha-rc0/
  • Change directory into the new release directory
Code Block
languagebash
themeRDark
titleMove into the release directory
cd public_html/ozone-0.4.0-alpha-rc0
  • Upload the release artifacts to this release directory
Code Block
languagebash
themeRDark
titleUpload Release Artifacts
mput *

Upload the artifacts to the apache nexus

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

Code Block
<settings>
  <servers>
	<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.staging.https</id>
      <username>your_apache_id</username>
      <password>your_apache_password</password>
	</server>
  </servers>
</settings>

Do a maven deploy from the ozone and hdds projects

Code Block
languagebash
themeRDark
titleUpload Release Artifacts
mvn deploy -Psign -pl \!:hadoop-ozone-dist -DskipTests -Dbuildhelper.skipAttach

If you are using bash:
mvn deploy -Psign -pl !:hadoop-ozone-dist -DskipTests -Dbuildhelper.skipAttach

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)

Image Removed

Push the tag to github

Code Block
languagebash
themeRDark
titlePush the tag
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 & commit the artifacts to a new directory.

Code Block
svn checkout https://dist.apache.org/repos/dist/dev/hadoop

svn mkdir ozone-0.5.0-beta

cp $RELEASE_DIR/* ozone-0.5.0-beta/

svn add ozone-0.5.0-beta/*

svn commit -m "Added ozone-0.5.0-beta directory"

PMC members can move it to the final location:

Code Block
svn mv https://dist.apache.org/repos/dist/dev/hadoop/ozone-0.5.0-beta https://dist.apache.org/repos/dist/release/hadoop/ozone/ozone-0.5.0-beta

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

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 listSee: Ozone Release Guideline