Dear Wiki user, You have subscribed to a wiki page or wiki category on "Hadoop Wiki" for change notification.
The "HowToReleasePostMavenizationWithGit" page has been changed by karthikkambatla: https://wiki.apache.org/hadoop/HowToReleasePostMavenizationWithGit?action=diff&rev1=54&rev2=55 = Branching = - Skip this section if this is NOT the first release in a series (i.e. release X.Y.0). + 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. Notify developers on the #hadoop IRC channel that you are about to branch a release. - 1. Update {{{CHANGES.txt}}} to include the release version and date (use {{{Unreleased}}} for the date if it is unknown) and remove {{{Trunk (unreleased changes)}}}. + 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 these changes to trunk. {{{ + 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. {{{ - svn commit -m "Preparing for release X.Y.Z" - }}} - 1. Create a branch for the release series: {{{ - svn copy https://svn.apache.org/repos/asf/hadoop/common/trunk \ - https://svn.apache.org/repos/asf/hadoop/common/branches/branch-X.Y -m "Branching for X.Y releases" - }}} - 1. Update {{{CHANGES.txt}}} to add back in {{{Trunk (unreleased changes)}}}. - 1. Update the default version in the pom files on trunk to X.Y+1.0-SNAPSHOT {{{mvn versions:set -DnewVersion=X.Z-SNAPSHOT}}}. - 1. Update the {{{project.version}}} number in {{{hadoop-hdfs-project/hadoop-hdfs/src/test/aop/build/aop.xml}}} on trunk to X.Y+1.0. - 1. Update the {{{symlink link}}} number in {{{hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml}}} on trunk to X.Y+1.0. - 1. Commit these changes to trunk. {{{ - svn commit -m "Preparing for X.Y+1.0 development" + 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 the version on branch-X.Y.Z TO X.Y.Z {{{mvn versions:set -DnewVersion=X.Y.Z}}} - }}} - - = Updating Release Branch = - - These operations take place in the release branch. - - 1. Check out the branch with: {{{ - svn co https://svn.apache.org/repos/asf/hadoop/common/branches/branch-X.Y - }}} - 1. Update {{{CHANGES.txt}}} to include the release version and date (this change must be committed to trunk and any intermediate branches between trunk and the branch being released). - 1. Generate {{{releasenotes.html}}} with release notes for this release. You generate these with: {{{ + 1. Generate {{{releasenotes.html}}} with release notes for this release. You generate these with: {{{ python ./dev-support/relnotes.py -v $(vers) - }}} If you 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. + }}} 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}}} {{{ + 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. Update the version number in the pom files on trunk to X.Y.N {{{mvn versions:set -DnewVersion=X.Z.N}}} where ''N'' is one greater than the release being made. - 1. Update the {{{project.version}}} number in {{{hadoop-hdfs-project/hadoop-hdfs/src/test/aop/build/aop.xml}}} on trunk to X.Y.N. - 1. Update the {{{symlink link}}} number in {{{hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml}}} on trunk to X.Y.N. - 1. Commit these changes. {{{ - svn commit -m "Preparing for release X.Y.Z" + 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-RCn) = + 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: {{{ + mvn apache-rat:check + }}}(Fix any errors in rat.txt in the appropriate maven module.) + 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 X.Y.Z-RCn"}}} + 1. Tag the release candidate: {{{ + git tag -s X.Y.Z-RCn -m "Release candidate n for X.Y.Z"}}} + 1. Push branch-X.Y.Z and the newly created tag to the remote repo. + 1. Deploy the maven artifacts {{{ + $ mvn clean deploy -Psign,src,dist -Dgpg.passphrase=<your-gpg-passphrase>}}}. Remember to clear your history file as your gpg-passphrase is in clear text. + 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. 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}}} + 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}}} + 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. If not already done, merge desired patches from trunk into the branch and commit these changes. You can find the revision numbers using {{{svn log CHANGES.txt}}} in the branch and in trunk. {{{ - cd branch-X.Y - svn merge -rR1:R2 ../trunk . - svn commit -m "Merge -r R1:R2 from trunk to X.Y branch. Fixes: HADOOP-A, HADOOP-B." - }}} - 1. Run mvn rat-check: {{{ - mvn apache-rat:check - }}} (Look for errors in rat.txt in the appropriate maven module.) - 1. Tag the release candidate (R is the release candidate number, and starts from 0): {{{ - svn copy https://svn.apache.org/repos/asf/hadoop/common/branches/branch-X.Y \ - https://svn.apache.org/repos/asf/hadoop/common/tags/release-X.Y.Z-rcR -m "Hadoop X.Y.Z-rcR release." - }}} - - = Build Requirements = - - To build an official release, you must: - - 1. Use a 32-bit JVM. Currently we don't have support for 64-bit binaries in our maven builds. - 1. Change refs to -SNAPSHOT in the following files:{{{ - hadoop-hdfs-project/hadoop-hdfs/src/test/aop/build/aop.xml - hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml - }}} - - = Building the Release Candidate (RC) = - - 1. Build the release & run unit tests. This is captured in [[http://svn.apache.org/viewvc/hadoop/nightly/hudsonBuildHadoopRelease.sh?view=markup]]. {{{ - # mvn clean - $ mvn clean - - # set version - $ export version=0.23.1 - $ mvn versions:set -DnewVersion=${version} - - # make the distribution (do not use 'clean' or -Dtar, for now do not use install either since it breaks -Psrc) - $ mvn package install -Dmaven.test.skip.exec=true - $ mvn deploy -Psign,src,native,dist -Dmaven.test.skip.exec=true -Dcontainer-executor.conf.dir=/etc/hadoop/conf - - # stage site - $ mvn site - $ mvn site:stage - - # release notes - $ cp hadoop-common-project/hadoop-common/src/main/docs/releasenotes.html target/staging/hadoop-project/hadoop-project-dist/hadoop-common - - # copy CHANGES.txt - $ cp hadoop-common-project/hadoop-common/CHANGES.txt target/staging/hadoop-project/hadoop-project-dist/hadoop-common - $ cp hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt target/staging/hadoop-project/hadoop-project-dist/hadoop-hdfs - $ mkdir target/staging/hadoop-project/hadoop-project-dist/hadoop-yarn - $ cp hadoop-yarn-project/CHANGES.txt target/staging/hadoop-project/hadoop-project-dist/hadoop-yarn - $ mkdir target/staging/hadoop-project/hadoop-project-dist/hadoop-mapreduce - $ cp hadoop-mapreduce-project/CHANGES.txt target/staging/hadoop-project/hadoop-project-dist/hadoop-mapreduce - - # copy site + javdocs - $ cp -R target/staging/hadoop-project/* hadoop-dist/target/hadoop-${version}/share/doc/hadoop/ - - # finally, create src/binary tarballs - $ cd hadoop-dist/target - - # src tarball after copying NOTICE.txt README.txt LICENSE.txt - $ tar -xzf hadoop-${version}-src.tar.gz - $ cp ../../hadoop-common-project/hadoop-common/NOTICE.txt hadoop-${version}-src - $ cp ../../hadoop-common-project/hadoop-common/README.txt hadoop-${version}-src - $ cp ../../hadoop-common-project/hadoop-common/LICENSE.txt hadoop-${version}-src - $ tar -czf hadoop-${version}-src.tar.gz hadoop-${version}-src - - # binary tarball after copying NOTICE.txt README.txt LICENSE.txt - $ cp ../../hadoop-common-project/hadoop-common/NOTICE.txt hadoop-${version} - $ cp ../../hadoop-common-project/hadoop-common/README.txt hadoop-${version} - $ cp ../../hadoop-common-project/hadoop-common/LICENSE.txt hadoop-${version} - $ tar -czf hadoop-${version}.tar.gz hadoop-${version} - }}} - 1. Check that release file looks ok - e.g. install it and run examples from tutorial. - 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 - }}} - 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 - }}} - 1. Copy release files to a public place. {{{ - ssh people.apache.org mkdir public_html/hadoop-X.Y.Z-candidate-0 - scp -p hadoop-${version}.tar.gz* people.apache.org:public_html/hadoop-${version}-candidate-0 - }}} - 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}}} from the left navigation pane, right-click on the pushed repository, and {{{close}}} the release. - 1. Call a release vote on common-dev at hadoop.apache.org. + 1. Call a release vote on common-dev at hadoop.apache.org. = Publishing =
