You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

This document describes the process to release Apache Hadoop Ozone. The process is not yet scripted, and the documentation is a work in progress

Pre-Requisite

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

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

Publish your key

The key supposed to be published together with the release. Please append it to the end of KEYS files:

https://dist.apache.org/repos/dist/release/ozone/KEYS


Export Vars
svn co https://dist.apache.org/repos/dist/release/ozone
cd ozone
export CODESIGNINGKEY=your_gpg_key_id
gpg --list-sigs $CODESIGNINGKEY >> KEYS
gpg --armor --export $CODESIGNINGKEY >> KEYS
svn commit -m "ozone: adding key of XXXX to the KEYS"

In case you are only a committer and not a PMC member, you can add your key to the dev KEYS file and a PMC can move it to the final destination

Export Vars
#use latest KEYS as the base
svn rm https://dist.apache.org/repos/dist/dev/ozone/KEYS
svn cp https://dist.apache.org/repos/dist/release/ozone/KEYS  https://dist.apache.org/repos/dist/dev/ozone/KEYS

svn co https://dist.apache.org/repos/dist/dev/ozone
cd ozone
export CODESIGNINGKEY=your_gpg_key_id
gpg --list-sigs $CODESIGNINGKEY >> KEYS
gpg --armor --export $CODESIGNINGKEY >> KEYS
svn commit -m "ozone: adding key of XXXX to the KEYS"


Please include the URL of the used KEYS file in your VOTE mail!

Pre-Vote

Set up environment variables

Export Vars
export VERSION=1.1.0

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

export CODESIGNINGKEY=your_gpg_key_id

Reset the git repository

Reset 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".

Update the Versions (Linux)
find . -name pom.xml -type f | xargs sed -i 's/1.1.0-SNAPSHOT/1.1.0/g'
Update the Versions (Mac)
find . -name pom.xml -type f -print0 | xargs -0 sed -i '' 's/1.1.0-SNAPSHOT/1.1.0/g'

Commit the changes

Commit the version changes
git commit -am "commit updated ozone version"

Build and commit the proto.lock change

Build and commit the proto.lock change
mvn clean install -T 6 -Pdist -Phdds -DskipTests -Dmaven.javadoc.skip=true -am -pl :hadoop-ozone-dist
git commit -m "update proto.lock"

Tag the repository

Tag the Release
git tag -s ozone-$VERSION-RC0

Create the release artifacts

  • Run rat check
Run RAT Check
./hadoop-ozone/dev-support/checks/rat.sh
  • Clean the Repo of all Rat output
Reset the Git Repo
git reset --hard

git clean -dfx
  • Build the Release Tarballs.
Build 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.


Copy 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

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 dev staging area

  •  Upload everything from the $RELEASE_DIR to the dev staging area
FTP to the apache server
svn mkdir https://dist.apache.org/repos/dist/dev/ozone/1.2.0-rc0
svn co  https://dist.apache.org/repos/dist/dev/ozone/1.1.0-rc2
cd 1.1.0-rc2

Upload the artifacts to the apache nexus

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

<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

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

Push the tag to github

Push the tag
git push origin ozone-1.1.0-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. dev@ozone <dev@ozone.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.

svn checkout https://dist.apache.org/repos/dist/dev/ozone

svn mkdir 1.1.0

cp $RELEASE_DIR/* 1.1.0/

svn add 1.1.0/*

svn commit -m "Added ozone-1.1.0 directory"


PMC members can move it to the final location:

svn mv https://dist.apache.org/repos/dist/dev/ozone/1.0.0 https://dist.apache.org/repos/dist/release/ozone/1.0.0


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 (moved) 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. Put the photo with the haiku to ozone/static/releases/
  2. Create a new page like ozone/src/release/0.3.0-alpha.md
  3. Copy the docs from the binary artifact to content/ozone/docs/
  4. Rename the above folder to the release version, example 0.5.0-beta
  5. Update the symbolic link for current. o do this, you will unlink current and then create new symlink
    cd content/ozone/docs
    unlink current
    ln -s content/ozone/docs/0.5.0-beta/ ./current
  6. Regenerate the site: cd hadoop-site/ozone && hugo
  7. Create a shorter announcement to the hadoop site, such as src/news/2018-11-22-ozone-0.3.0-alpha.md
  8. Execute hugo on the root dir of the repository
  9. Go to the content subfolder, start a webserver (I use Caddy without a config but python -m http also works) and check the result

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

Add the final git tag and push it

git checkout ozone-1.1.0-RC1

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

git push ozone-1.1.0

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 version and bump the ozone version:

find -name pom.xml -type f | xargs -n 1 sed -i 's/1.1.0/1.2.0-SNAPSHOT/g'

3. Do a build and push the branch

Write an announcement mail to the Ozone mailing lists


  • No labels