This page is to document the release procedure for Oozie. Oozie is currently a Apache incubator project. Its release process is still work in progress. h3. Preparation # A committer proposes a release and a release manager is chosen by the committers (normally the committer proposing the release would be the release manager). # Agree on the initial scope for the release and update JIRAs accordingly. h3. Create the Release Branch A new release branch is created only for for major (X.0.0) and minor (X.Y.0) releases but not for patches (X.Y.Z). A patch is an update to an existing branch created for X.Y.0. A patch release must be tagged. # Send email to oozie-dev@incubator.apache.org to notify that ## A new branch is about to be created from trunk, from a major branch or from a minor branch. ## Request to hold off any commits from the corresponding branch until further email. # Create a branch for the release. For example: svn copy https://svn.apache.org/repos/asf/incubator/oozie/trunk \ https://svn.apache.org/repos/asf/incubator/oozie/branches/branch-X.Y -m "Branching for X.Y releases" # Update the original branch ticking the corresponding major or minor version in all POMs (use the Maven versions plugin). # Send email to oozie-dev@incubator.apache.org to notify that the release branch has been created and that commits can resume. h3. Work on the Release Branch # Work on existing JIRAs and new ones until the release manager feels that the branch is ready for a release. # As a general rule, JIRAs must be committed first to trunk and the backported to the branch. Only for cases where the JIRAs does not apply to trunk the JIRA should be only committed to the branch. h3. Updating Release Branch These steps are required for all the releases (such as major, minor, and patches). # Check out the branch with: svn co https://svn.apache.org/repos/asf/incubator/oozie/branches/branch-X.Y # Create _rat_ report to verify all files have the corresponding Apache License header. The generated report will be used later. (TBD: How to combine rat report generated for each sub-projects?) mvn apache-rat:check # Tag the release candidate, where R is the iteration number for this release candidate, starting with 0: svn copy https://svn.apache.org/repos/asf/incubator/oozie/branches/branch-X.Y \ https://svn.apache.org/repos/asf/incubator/oozie/tags/release-X.Y.Z-rcR -m "Oozie X.Y.Z-rcR release." h3. Building # Build running all test cases. bin/mkdistro.sh # Generate the MD5 checksum of the release file. cd distro/target md5sum Oozie-X.Y.Z-incubating.tar.gz > Oozie-X.Y.Z-incubating.tar.gz.md5 # If you do not have a gpg key pair, do the following steps: ## Generating key pair using the following command. You can simply accept all default settings and give your name, email and Passphase. gpg --gen-key ## Export the public key. gpg --armor --output pubkey.txt --export 'Your Name' ## Open pubkey.txt, copy the full text and append it to the following files by pasting, then commit these changes: https://svn.apache.org/repos/asf/incubator/oozie/branches/branch-X.Y.Z/KEYS https://svn.apache.org/repos/asf/incubator/oozie/trunk/KEYS ## Upload updated KEYS to Apache. scp KEYS people.apache.org:/www/www.apache.org/dist/incubator/oozie/KEYS ## Export your private key, keep it with you. gpg --export-secret-key -a "Your Name" > private.key # Sign the release (see Step-By-Step Guide to Mirroring Releases for more information). gpg --armor --output oozie-X.Y.Z-incubating.tar.gz.asc --detach-sig oozie-X.Y.Z-incubating.tar.gz # Verify gpg signature. gpg --import KEYS (if necessarily) gpg --verify oozie-X.Y.Z-incubating.tar.gz.asc oozie-X.Y.Z-incubating.tar.gz # Copy release files to a public place (usually into public_html in your home directory): ssh people.apache.org mkdir public_html/oozie-X.Y.Z-incubating-candidate-0 scp -p oozie-X.Y.Z-incubating.tar.gz* people.apache.org:public_html/oozie-X.Y.Z-incubating-candidate-0 scp release_log.txt people.apache.org:public_html/oozie-X.Y.Z-incubating-candidate-0 scp rat_report people.apache.org:public_html/oozie-X.Y.Z-incubating-candidate-0 NOTE: The rat_report is the report generated in the Updating Release Branch section above. # Call a release vote for the Oozie Podling PMC (PPMC). Per Apache Incubator rules, this vote is non-binding, but it help us catching issues with the release candidate before calling for an Incubator IPMC vote and to practice how things will be as a top level project. This vote must receive a minimum of 3 Oozie committers \+1s, and more \+1s than \-1s. The email should be sent to oozie-dev@incubator.apache.org. The mail should: ## Have a subject line "\[VOTE\] Release Oozie X.Y.Z-incubating (candidate a)" where X.Y.Z is the version number and a is the candidate number for this release. ## State what are new in this release. ## Tell where the keys used to sign the release can be found. ## State where the release, md5 signature, gpg signature, and rat report can be found. ## Request that users and developers download it, test it, and vote. ## State when the vote closes. The vote must remain open for at least 72 hours. It can be longer at your discretion (e.g. around major holidays). Here is a sample email: Subject: [VOTE] Release Oozie X.Y.Z-incubating (candidate 0) Hi, I have created a candidate build for Oozie X.Y.Z-incubating. This is the first release of Oozie from Apache Incuabtion. Keys used to sign the release are available at http://svn.apache.org/viewvc/incubator/oozie/trunk/KEYS?view=markup. Please download, test, and try it out: http://people.apache.org/~you/oozie-X.Y.Z-incubating-candidate-0 The release, md5 signature, gpg signature, and rat report can all be found at the above address. Should we release this? Vote closes on . Me # If Oozie PPMC approves the release, call an Incubator PMC (IPMC) vote. This vote must receive a minimum of 3 IPMC member \+1s, and more \+1s than \-1s. The email should be sent to the general@incubator.apache.org alias, it should be the original email prefixed with the Oozie PPMC tally. If both votes pass, the release needs to be published. # Tag the release: svn move https://svn.apache.org/repos/asf/incubator-oozie/tags/release-X.Y.Z-rcR \ https://svn.apache.org/repos/asf/incubator-oozie/tags/release-X.Y.Z -m "Oozie X.Y.Z release." # Copy the release files to the distribution directory and make them writable by the oozie group. ssh people.apache.org cp -pr public_html/oozie-X.Y.Z-incubating-candidate-0 /www/www.apache.org/dist/incubator/oozie/oozie-X.Y.Z-incubating cd /www/www.apache.org/dist/incubator/oozie chgrp -R incubator oozie-X.Y.Z-incubating chmod -R g+w oozie-X.Y.Z-incubating # Wait 24 hours for release to propagate to mirrors. # Update the website. ## Do any necessary site updates in the branches/ap-pages branch (don't miss the doc links in the site.xml file. ## Generate the new site pages mvn site ## After verifying the new site is correct, commit the changes to branches/ap-pages ## Checkout the site: svn co https://svn.apache.org/repos/asf/incubator/oozie/site ## Go to the ## ## Commit the changes. # Wait until you see your changes reflected on the Apache web site. # Send announcements to the user and developer lists as well as (announce@haoop.apache.org) once the site changes are visible. The Oozie team is happy to announce the release of Oozie X.Y.Z. Apache Oozie provides a workflow management and scheduling for Hadoop jobs. More details about Oozie can be found at http://incubator.apache.org/oozie. The highlights of this release are ... The details of the release can be found at http://incubator.apache.org/oozie/releases.html. # Goto JIRA and click on Administration tab. # Select the Oozie project. # Select Manage versions. # Select Release for the version you have released. # If a description has not yet been added for the version you are releasing, select Edit Details and give a brief description of the release. # If the next version does not exist (that is, if you are releasing version X.Y, if version X.Y+1 does not yet exist) create it using the Add Version box at the top of the page. # In JIRA, mark the issues resolved in this release as closed. ## Goto JIRA and click on the "Search for Issues" on "Issues" menu. ## In the left hand Edit section, set Project to Oozie. ## In Status select "Resolved" ## In Resolutions select "Fixed" ## Click "Search" button ## In the next screen, further select fix For select the version you are releasing. ## Click on the "Search" button ## Select "Tools->Bulk change all XX issues" (near the top right) ## Select all the issues and click on "Next" ## Select "Transition Issues" radio button and click on "Next" ## Select "Close Issue" radio button and click on "Next" ## Uncheck the box near the bottom at says "Send mail for this update" lest you spam every Oozie developer with a message for every bug resolved in this release. Click "Next". ## Click "Confirm". Don't worry if it gives you a HTTP 500 error, it still does the transitions.