Dear Wiki user, You have subscribed to a wiki page or wiki category on "Hadoop Wiki" for change notification.
The "HowToRelease" page has been changed by VinodKumarVavilapalli: https://wiki.apache.org/hadoop/HowToRelease?action=diff&rev1=72&rev2=73 Comment: Minor edit ## page was copied from HowToReleasePostMavenization ''This page is prepared for Hadoop Core committers. You need committer rights to create a new Hadoop Core release.'' - These instructions have been updated for Hadoop 2.5.1 and later releases to reflect the changes to version-control (git), build-scripts and mavenization. + These instructions have been updated for Hadoop 2.5.1 and later releases to reflect the changes to version-control (git), build-scripts and mavenization. Earlier versions of this document are at HowToReleaseWithSvnAndAnt and HowToReleasePostMavenization <<TableOfContents(4)>> = Preparation = - - 1. Bulk update Jira to unassign from this release all issues that are open non-blockers and send follow-up notification to the developer list that this was done. + 1. Bulk update Jira to unassign from this release all issues that are open non-blockers and send follow-up notification to the developer list that this was done. - 1. If you have not already done so, [[http://www.apache.org/dev/release-signing.html#keys-policy|append your code signing key]] to the [[https://dist.apache.org/repos/dist/release/hadoop/common/KEYS|KEYS]] file. Once you commit your changes, they will automatically be propagated to the website. Also [[http://www.apache.org/dev/release-signing.html#keys-policy|upload your key to a public key server]] if you haven't. End users use the KEYS file (along with the [[http://www.apache.org/dev/release-signing.html#web-of-trust|web of trust]]) to validate that releases were done by an Apache committer. For more details on signing releases, see [[http://www.apache.org/dev/release-signing.html|Signing Releases]] and [[http://www.apache.org/dev/mirror-step-by-step.html?Step-By-Step|Step-By-Step Guide to Mirroring Releases]]. + 1. If you have not already done so, [[http://www.apache.org/dev/release-signing.html#keys-policy|append your code signing key]] to the [[https://dist.apache.org/repos/dist/release/hadoop/common/KEYS|KEYS]] file. Once you commit your changes, they will automatically be propagated to the website. Also [[http://www.apache.org/dev/release-signing.html#keys-policy|upload your key to a public key server]] if you haven't. End users use the KEYS file (along with the [[http://www.apache.org/dev/release-signing.html#web-of-trust|web of trust]]) to validate that releases were done by an Apache committer. For more details on signing releases, see [[http://www.apache.org/dev/release-signing.html|Signing Releases]] and [[http://www.apache.org/dev/mirror-step-by-step.html?Step-By-Step|Step-By-Step Guide to Mirroring Releases]]. - 1. To deploy artifacts to the Apache Maven repository create {{{~/.m2/settings.xml}}}:{{{ + 1. 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 @@ -30, +30 @@ }}} = Branching = + When releasing Hadoop X.Y.Z, the following branching changes are required. Note that a release can match more than one of the following if-conditions. For a major release, one needs to make the changes for minor and point releases as well. Similarly, a new minor release is also a new point release. - When releasing Hadoop X.Y.Z, the following branching changes are required. Note that a release can match more than one of the following if-conditions. For a major release, one needs to make the changes for minor and point releases as well. Similarly, a new minor release is also a new point release. + 1. Add the release X.Y.Z to CHANGES.txt files if it doesn't already exist (leave the date as unreleased for now). Commit these changes to trunk and any of branch-X, branch-X.Y if they exist. + {{{ + git commit -a -m "Adding release X.Y.Z to CHANGES.txt" + }}} + 1. If this is a new major release (i.e., Y = 0 and Z = 0) + 1. Create a new branch (branch-X) for all releases in this major release. + 1. Update the version on trunk to (X+1).0.0-SNAPSHOT + {{{ + mvn versions:set -DnewVersion=(X+1).0.0-SNAPSHOT + }}} + 1. Commit the version change to trunk. + {{{ + git commit -a -m "Preparing for (X+1).0.0 development" + }}} + 1. If this is a new minor release (i.e., Z = 0) + 1. Create a new branch (branch-X.Y) for all releases in this minor release. + 1. Update the version on branch-X to X.(Y+1).0-SNAPSHOT + {{{ + mvn versions:set -DnewVersion=X.(Y+1).0-SNAPSHOT + }}} + 1. Commit the version change to branch-X. + {{{ + git commit -a -m "Preparing for X.(Y+1).0 development" + }}} + 1. If this is a new point release (i.e., always) + 1. Create a new branch (branch-X.Y.Z) for this release. + 1. Update the version on branch-X.Y to X.Y.(Z+1)-SNAPSHOT + {{{ + mvn versions:set -DnewVersion=X.Y.(Z+1)-SNAPSHOT + }}} + 1. Commit the version change to branch-X.Y. + {{{ + git commit -a -m "Preparing for X.Y.(Z+1) development" + }}} + 1. Release branch (branch-X.Y.Z) updates: + 1. Update {{{hadoop-project//src/site/markdown/index.md.vm}}} to reflect the right versions, new features and big improvements. + 1. Update the version on branch-X.Y.Z TO X.Y.Z + {{{ + mvn versions:set -DnewVersion=X.Y.Z + }}} + 1. Generate {{{releasenotes.html}}} with release notes for this release. You generate these with: + {{{ + python ./dev-support/relnotes.py -v $(vers) + }}} + If your release includes more then one version you may add additional -v options for each version. By default the previousVersion mentioned in the notes will be X.Y.Z-1, if this is not correct you can override this by setting the --previousVer option. + 1. Update {{{releasenotes.html}}} + {{{ + mv releasenotes.$(vers).html ./hadoop-common-project/hadoop-common/src/main/docs/releasenotes.html + }}} + Note that the script generates a set of notes for HDFS, HADOOP, MAPREDUCE, and YARN too, but only common is linked from the html documentation so the indavidual ones are ignored for now. + 1. Commit these changes to branch-X.Y.Z + {{{ + git commit -a -m "Preparing for release X.Y.Z" + }}} + Now, for any branches in {trunk, branch-X, branch-X.Y, branch-X.Y.Z} that have changed, push them to the remote repo taking care of any conflicts. - 1. Add the release X.Y.Z to CHANGES.txt files if it doesn't already exist (leave the date as unreleased for now). Commit these changes to trunk and any of branch-X, branch-X.Y if they exist. {{{ - git commit -a -m "Adding release X.Y.Z to CHANGES.txt"}}} - 1. If this is a new major release (i.e., Y = 0 and Z = 0) - 1. Create a new branch (branch-X) for all releases in this major release. - 1. Update the version on trunk to (X+1).0.0-SNAPSHOT {{{ - mvn versions:set -DnewVersion=(X+1).0.0-SNAPSHOT}}} - 1. Commit the version change to trunk. {{{ - git commit -a -m "Preparing for (X+1).0.0 development"}}} - 1. If this is a new minor release (i.e., Z = 0) - 1. Create a new branch (branch-X.Y) for all releases in this minor release. - 1. Update the version on branch-X to X.(Y+1).0-SNAPSHOT {{{ - mvn versions:set -DnewVersion=X.(Y+1).0-SNAPSHOT}}} - 1. Commit the version change to branch-X. {{{ - git commit -a -m "Preparing for X.(Y+1).0 development"}}} - 1. If this is a new point release (i.e., always) - 1. Create a new branch (branch-X.Y.Z) for this release. - 1. Update the version on branch-X.Y to X.Y.(Z+1)-SNAPSHOT {{{ - mvn versions:set -DnewVersion=X.Y.(Z+1)-SNAPSHOT}}} - 1. Commit the version change to branch-X.Y. {{{ - git commit -a -m "Preparing for X.Y.(Z+1) development"}}} - 1. Release branch (branch-X.Y.Z) updates: - 1. Update {{{hadoop-project//src/site/markdown/index.md.vm}}} to reflect the right versions, new features and big improvements. - 1. Update the version on branch-X.Y.Z TO X.Y.Z {{{ - mvn versions:set -DnewVersion=X.Y.Z}}} - 1. Generate {{{releasenotes.html}}} with release notes for this release. You generate these with: {{{ - python ./dev-support/relnotes.py -v $(vers) - }}} If your release includes more then one version you may add additional -v options for each version. By default the previousVersion mentioned in the notes will be X.Y.Z-1, if this is not correct you can override this by setting the --previousVer option. - 1. Update {{{releasenotes.html}}} {{{ - mv releasenotes.$(vers).html ./hadoop-common-project/hadoop-common/src/main/docs/releasenotes.html - }}} Note that the script generates a set of notes for HDFS, HADOOP, MAPREDUCE, and YARN too, but only common is linked from the html documentation so the indavidual ones are ignored for now. - 1. Commit these changes to branch-X.Y.Z {{{ - git commit -a -m "Preparing for release X.Y.Z"}}} - Now, for any branches in {trunk, branch-X, branch-X.Y, branch-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>) = These steps need to be performed to create the ''N''th RC for X.Y.Z, where ''N'' starts from 0. + - 1. Run mvn rat-check and fix any errors {{{ + 1. Run mvn rat-check and fix any errors + {{{ mvn apache-rat:check }}} - 1. Set environment variable version for later steps. {{{export version=X.Y.Z-RCN}}} + 1. Set environment variable version for later steps. {{{export version=X.Y.Z-RCN}}} - 1. Set the release date for X.Y.Z to the current date in each CHANGES.txt file in branch-X.Y.Z and commit the changes. {{{ + 1. Set the release date for X.Y.Z to the current date in each CHANGES.txt file in branch-X.Y.Z and commit the changes. + {{{ - git commit -a -m "Set the release date for $version"}}} + git commit -a -m "Set the release date for $version" + }}} - 1. Tag the release candidate: {{{ + 1. Tag the release candidate: + {{{ - git tag -s release-$version -m "Release candidate - $version"}}} + git tag -s release-$version -m "Release candidate - $version" + }}} - 1. Push branch-X.Y.Z and the newly created tag to the remote repo. + 1. Push branch-X.Y.Z and the newly created tag to the remote repo. - 1. Deploy the maven artifacts, on your personal computer. (You might want to do this in private and clear your history file as your gpg-passphrase is in clear text) {{{ + 1. Deploy the maven artifacts, on your personal computer. (You might want to do this in private and clear your history file as your gpg-passphrase is in clear text) + {{{ - mvn clean deploy -Psign,src,dist -DskipTests -Dgpg.passphrase=<your-gpg-passphrase>}}} + mvn clean deploy -Psign,src,dist -DskipTests -Dgpg.passphrase=<your-gpg-passphrase> + }}} - 1. Use [[https://builds.apache.org/job/HADOOP2_Release_Artifacts_Builder|this Jenkins job]] to build the artifacts + 1. Use [[https://builds.apache.org/job/HADOOP2_Release_Artifacts_Builder|this Jenkins job]] to build the artifacts - 1. Check that release file looks ok - e.g. install it and run examples from tutorial. + 1. Check that release file looks ok - e.g. install it and run examples from tutorial. - 1. Generate the checksums of the release file. {{{ + 1. Generate the checksums of the release file. + {{{ gpg --print-mds hadoop-${version}-src.tar.gz > hadoop-${version}-src.tar.gz.mds - gpg --print-mds hadoop-${version}.tar.gz > hadoop-${version}.tar.gz.mds}}} + gpg --print-mds hadoop-${version}.tar.gz > hadoop-${version}.tar.gz.mds + }}} - 1. Sign the release {{{ + 1. Sign the release + {{{ gpg --armor --output hadoop-${version}-src.tar.gz.asc --detach-sig hadoop-${version}-src.tar.gz - gpg --armor --output hadoop-${version}.tar.gz.asc --detach-sig hadoop-${version}.tar.gz}}} + gpg --armor --output hadoop-${version}.tar.gz.asc --detach-sig hadoop-${version}.tar.gz + }}} - 1. Copy release files to a public place. {{{ + 1. Copy release files to a public place. + {{{ ssh people.apache.org mkdir public_html/hadoop-${version} scp -p hadoop-${version}.tar.gz* people.apache.org:public_html/hadoop-${version} }}} - 1. Log into [[https://repository.apache.org|Nexus]], select {{{Staging}}} from the left navigation pane, right-click on the pushed repository, and {{{close}}} the release. + 1. Log into [[https://repository.apache.org|Nexus]], select "{{{Staging}}} Repositories" from the left navigation pane, select the check-box against the specific hadoop repository, and {{{close}}} the release. - 1. Call a release vote on common-dev at hadoop.apache.org. [[https://www.mail-archive.com/common-dev@hadoop.apache.org/msg13339.html|Example]] + 1. Call a release vote on common-dev at hadoop.apache.org. [[https://www.mail-archive.com/common-dev@hadoop.apache.org/msg13339.html|Example]] = Publishing = + In 5 days if [[http://hadoop.apache.org/bylaws#Decision+Making|the release vote passes]], the release may be published. - In 5 days if [[http://hadoop.apache.org/bylaws#Decision+Making|the release vote passes]], the release may be published. - 1. Update the release date in CHANGES.txt of trunk, branch-X, branch-X.Y to reflect the one in branch-X.Y.Z. Commit and push those changes. {{{ + 1. Update the release date in CHANGES.txt of trunk, branch-X, branch-X.Y to reflect the one in branch-X.Y.Z. Commit and push those changes. + {{{ - git commit -a -m "Set the release date for X.Y.Z"}}} + git commit -a -m "Set the release date for X.Y.Z" + }}} - 1. Tag the release: {{{ + 1. Tag the release: + {{{ - git tag -s release-X.Y.Z -m "Hadoop X.Y.Z release"}}} + git tag -s release-X.Y.Z -m "Hadoop X.Y.Z release" + }}} - 1. Copy release files to the distribution directory + 1. Copy release files to the distribution directory - 1. Check out the corresponding svn repo if need be {{{ + 1. Check out the corresponding svn repo if need be + {{{ svn co https://dist.apache.org/repos/dist/release/hadoop/common/ hadoop-dist }}} - 1. Generate new .mds files referring to the final release tarballs and not the RCs + 1. Generate new .mds files referring to the final release tarballs and not the RCs - 1. Copy the release files to hadoop-dist/hadoop-${version} + 1. Copy the release files to hadoop-dist/hadoop-${version} - 1. Update the symlinks to current2 and stable2. The release directory usually contains just two releases, the most recent from two branches. + 1. Update the symlinks to current2 and stable2. The release directory usually contains just two releases, the most recent from two branches. - 1. Commit the changes {{{ + 1. Commit the changes + {{{ svn ci -m "Publishing the bits for release ${version}" }}} - 1. In [[https://repository.apache.org|Nexus]], effect the release of artifacts by selecting the staged repository and then clicking {{{Release}}} + 1. In [[https://repository.apache.org|Nexus]], effect the release of artifacts by selecting the staged repository and then clicking {{{Release}}} - 1. Wait 24 hours for release to propagate to mirrors. + 1. Wait 24 hours for release to propagate to mirrors. - 1. Edit the website. + 1. Edit the website. - 1. Checkout the website if you haven't already {{{ + 1. Checkout the website if you haven't already + {{{ svn co https://svn.apache.org/repos/asf/hadoop/common/site/main hadoop-common-site }}} - 1. Update the documentation links in {{{author/src/documentation/content/xdocs/site.xml}}}. + 1. Update the documentation links in {{{author/src/documentation/content/xdocs/site.xml}}}. - 1. Update the release news in {{{author/src/documentation/content/xdocs/releases.xml}}}. + 1. Update the release news in {{{author/src/documentation/content/xdocs/releases.xml}}}. - 1. Update the news on the home page {{{author/src/documentation/content/xdocs/index.xml}}}. + 1. Update the news on the home page {{{author/src/documentation/content/xdocs/index.xml}}}. - 1. Copy the new release docs to svn and update the {{{docs/current}}} link, by doing the following: {{{ + 1. Copy the new release docs to svn and update the {{{docs/current}}} link, by doing the following: + {{{ - tar xvf /www/www.apache.org/dist/hadoop/core/hadoop-${version}/hadoop-${version}.tar.gz + tar xvf /www/www.apache.org/dist/hadoop/core/hadoop-${version}/hadoop-${version}.tar.gz cp -rp hadoop-${version}/share/doc/hadoop publish/docs/r${version} rm -r hadoop-${version} rm current2 current ln -s r${version} current2 ln -s current2 current }}} - 1. Similarly update the symlinks for stable if need be. + 1. Similarly update the symlinks for stable if need be. - 1. Add the documentation changes. {{{ + 1. Add the documentation changes. + {{{ svn add publish/docs/r${version} }}} - 1. Regenerate the site, review it, then commit it. {{{ + 1. Regenerate the site, review it, then commit it. + {{{ ant -Dforrest.home=$FORREST_HOME -Djava5.home=/usr/local/jdk1.5 firefox publish/index.html svn commit -m "Updated site for release X.Y.Z." }}} - 1. Send announcements to the user and developer lists once the site changes are visible. + 1. Send announcements to the user and developer lists once the site changes are visible. - 1. In Jira, ensure that only issues in the "Fixed" state have a "Fix Version" set to release X.Y.Z. + 1. In Jira, ensure that only issues in the "Fixed" state have a "Fix Version" set to release X.Y.Z. - 1. In Jira, "release" the version. Visit the "Administer Project" page, then the "Manage versions" page. You need to have the "Admin" role in Hadoop Core's Jira for this step and the next. + 1. In Jira, "release" the version. Visit the "Administer Project" page, then the "Manage versions" page. You need to have the "Admin" role in Hadoop Core's Jira for this step and the next. - 1. In Jira, close issues resolved in the release. Disable mail notifications for this bulk change. + 1. In Jira, close issues resolved in the release. Disable mail notifications for this bulk change. = See Also = - * [[http://www.apache.org/dev/release.html|Apache Releases FAQ]]