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
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
#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 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
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/1.1.0-SNAPSHOT/1.1.0/g'
find . -name pom.xml -type f -print0 | xargs -0 sed -i '' 's/1.1.0-SNAPSHOT/1.1.0/g'
Commit the changes
git commit -am "commit updated ozone version"
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
git tag -s ozone-$VERSION-RC0
Create the release artifacts
- Run rat check
./hadoop-ozone/dev-support/checks/rat.sh
- Clean the Repo of all Rat output
git reset --hard git clean -dfx
- Build the Release Tarballs.
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.
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
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
- Copy all the release files to the new directory and commit them
- Check the results using your browser by connecting to https://dist.apache.org/repos/dist/dev/ozone/
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
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
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
- 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:
- Put the photo with the haiku to ozone/static/releases/
- Create a new page like ozone/src/release/0.3.0-alpha.md
- Copy the docs from the binary artifact to content/ozone/docs/
- Rename the above folder to the release version, example 0.5.0-beta
- 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 - Regenerate the site: cd hadoop-site/ozone && hugo
- Create a shorter announcement to the hadoop site, such as src/news/2018-11-22-ozone-0.3.0-alpha.md
- Execute hugo on the root dir of the repository
- 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