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

  1. 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:
    1. Start with this query and verify:

      project in (SUBMARINE) AND "Target Version/s" = 0.2.0 and statusCategory != Done
    2. Do the bulk update for each project individually to set the target version to 0.3.0
  2. Send follow-up notification to the developer list that this was done.
  3. 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)

  1. Create a new branch (submarine-X) for all releases in this major release.
  2. 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'
  3. Commit the version change to trunk.
git commit -m "Preparing for submarine-1.0.0 development"


For Minor release (i.e., Z = 0)

  1. Create a new branch (submarine-X.Y) for all releases in this minor release.
  2. 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'
  3. 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)

  1. Create a new branch (submarine-X.Y.Z) for all releases in this major release.
  2. 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'
  3. 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>)

  1. Set below env variables

    export VERSION=0.2.0

    export RELEASE_DIR=~/submarine-release/

    export CODESIGNINGKEY=your_gpg_key_id

  2. In JIRA, ensure that only issues in the "Fixed" state have a "Fix Version" set to release X.Y.Z.
  3. Verify that $HOME/.gpg defaults to the key listed in the KEYS file.
  4. 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
  5. 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
  6. 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

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

  8. 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

  9. Upload the artifacts to somewhere. Upload everything from the $RELEASE_DIR to your apache home with sftp.
    1. FTP to the apache server

    2. Create public_html

      mkdir public_html
    3. Create the Release Directory under public_html

      mkdir public_html/submarine-0.X.0-rc0/
    4. Move into the release directory

      cd public_html/submarine-0.X.0-alpha-rc0
    5. Upload Release Artifacts

      mput *

  10. Upload Release Artifacts

    cd hadoop-submarine

    mvn deploy -Psign -Dgpg.keyname=$CODESIGNINGKEY

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>
  5. submarine-dev@hadoop.apache.org <submarine-dev@hadoop.apache.org>
  • No labels