This wiki is no longer maintained. Please go to the official Submarine wiki.
Prerequisite
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
Preparation
- Bulk update JIRA to unassign from this release all issues that are open non-blockers. This is involved since you can only bulk change issues within the same project, so minimally requires four bulk changes for SUBMARINE. Editing the "Target Version/s" field is also a blind write, so you need to be careful not to lose any other fix versions that are set. For updating 0.2.0 to 0.3.0, the process looked like this:
Start with this query and verify:
project in (SUBMARINE) AND "Target Version/s" = 0.2.0 and statusCategory != Done - Do the bulk update for each project individually to set the target version to 0.3.0
- Send follow-up notification to the developer list that this was done.
- To deploy artifacts to the Apache Maven repository create ~/.m2/settings.xml:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>apache.staging.https</id> <username>Apache username</username> <password>Apache password</password> </server> </servers> </settings> |
---|
Branch cut
To release Submarine-X.Y.Z, following branch changes are required.
For Major release (i.e., Y = 0 and Z = 0)
- Create a new branch (submarine-X) for all releases in this major release.
- Update the version on trunk to (X+1).0.0-SNAPSHOT
Update the Versions (Linux)
find . -name pom.xml -type f | xargs sed -i 's/0.2.0-SNAPSHOT/1.0.0-SNAPSHOT/g' Update the Versions (Mac)
find . -name pom.xml -type f -print0 | xargs -0 sed -i '' 's/0.2.0-SNAPSHOT/1.0.0-SNAPSHOT/g' - Commit the version change to trunk.
git commit -m "Preparing for submarine-1.0.0 development" |
---|
For Minor release (i.e., Z = 0)
- Create a new branch (submarine-X.Y) for all releases in this minor release.
- Update the version on branch submarine-X to X.(Y+1).0-SNAPSHOT
Update the Versions (Linux)
find . -name pom.xml -type f | xargs sed -i 's/0.2.0-SNAPSHOT/0.3.0-SNAPSHOT/g' Update the Versions (Mac)
find . -name pom.xml -type f -print0 | xargs -0 sed -i '' 's/0.2.0-SNAPSHOT/0.3.0-SNAPSHOT/g' - Commit the version change to trunk.
git commit -m "Preparing for submarine-0.3.0 development" |
---|
For eg;, this step can be done from submarine-0.2 branch and change all pom.xml of submarine as per above steps.
For Point release (i.e., always)
- Create a new branch (submarine-X.Y.Z) for all releases in this major release.
- Update the version on branch submarine-X.Y to X.Y.(Z+1)-SNAPSHOT
Update the Versions (Linux)
find . -name pom.xml -type f | xargs sed -i 's/0.2.0-SNAPSHOT/0.2.1-SNAPSHOT/g' Update the Versions (Mac)
find . -name pom.xml -type f -print0 | xargs -0 sed -i '' 's/0.2.0-SNAPSHOT/0.2.1-SNAPSHOT/g' - Commit the version change to trunk.
git commit -m "Preparing for submarine-0.2.1 development" |
---|
Release branch (branch-X.Y.Z) updates
Update the version on submarine-X.Y.Z TO X.Y.Z
Update the Versions (Linux)'
find . -name pom.xml -type f | xargs sed -i 's/0.2.0-SNAPSHOT/0.2.0/g' |
---|
Update the Versions (Mac)
find . -name pom.xml -type f -print0 | xargs -0 sed -i '' 's/0.2.0-SNAPSHOT/0.2.0/g' |
---|
Now, for any branches in {trunk, submarine-X, submarine-X.Y, submarine-X.Y.Z} that have changed, push them to the remote repo taking care of any conflicts.
git push <remote> <branch> |
---|
Creating the release candidate (X.Y.Z-RC<N>)
Set below env variables
export VERSION=0.2.0
export RELEASE_DIR=~/submarine-release/
export CODESIGNINGKEY=your_gpg_key_id
- In JIRA, ensure that only issues in the "Fixed" state have a "Fix Version" set to release X.Y.Z.
- Verify that $HOME/.gpg defaults to the key listed in the KEYS file.
Build the release tar balls.
mvn clean; mvn install -Dmaven.javadoc.skip=true -Psign,dist,src,submarine,submarine-src -Dgpg.useagent=true -Dgpg.executable=gpg -Dtar -DskipTests -DskipShade -Dgpg.keyname=$CODESIGNINGKEY Run rat check against submarine source code. If there are issues, double check the rat log to find and fix any potential licensing issues.
Run RAT Check
./hadoop-submarine/dev-support/checks/rat.sh Tag the release. Do it from the release branch and push the created tag to the remote repository:
git tag -s submarine-$VERSION-RC0 -m "Submarine ${VERSION} release"
git push origin submarine-$VERSION-RC0
Copy to all relevant artifacts to Release Directory. (Define RELEASE_DIR in local machine)
cp hadoop-submarine/hadoop-submarine-dist/target/hadoop-submarine-dist-$VERSION-hadoop-3.1.tar.gz $RELEASE_DIR/hadoop-submarine-$VERSION.tar.gz
cp hadoop-dist/target/hadoop-submarine-3.3.0-SNAPSHOT-src.tar.gz $RELEASE_DIR/hadoop-submarine-$VERSION-src.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. Upload everything from the $RELEASE_DIR to your apache home with sftp.
FTP to the apache server
sftp home.apache.org Create public_html
mkdir public_html Create the Release Directory under public_html
mkdir public_html/submarine-0.X.0-rc0/ Move into the release directory
cd public_html/submarine-0.X.0-alpha-rc0 Upload Release Artifacts
mput *
Upload Release Artifacts
cd hadoop-submarine
mvn deploy -Psign -Dgpg.keyname=$CODESIGNINGKEY
Send the voting mail to below mailing list
- Hadoop Common <common-dev@hadoop.apache.org>
- Hdfs-dev <hdfs-dev@hadoop.apache.org>
- yarn-dev@hadoop.apache.org <yarn-dev@hadoop.apache.org>
- mapreduce-dev@hadoop.apache.org <mapreduce-dev@hadoop.apache.org>
- submarine-dev@hadoop.apache.org <submarine-dev@hadoop.apache.org>