Author: elserj Date: Thu Feb 13 00:04:50 2014 New Revision: 1567814 URL: http://svn.apache.org/r1567814 Log: ACCUMULO-1468 Initial outline for release guidelines/steps.
Added: accumulo/site/trunk/content/releasing.mdtext Modified: accumulo/site/trunk/templates/sidenav.mdtext Added: accumulo/site/trunk/content/releasing.mdtext URL: http://svn.apache.org/viewvc/accumulo/site/trunk/content/releasing.mdtext?rev=1567814&view=auto ============================================================================== --- accumulo/site/trunk/content/releasing.mdtext (added) +++ accumulo/site/trunk/content/releasing.mdtext Thu Feb 13 00:04:50 2014 @@ -0,0 +1,99 @@ +Title: Making a Release +Notice: Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + +This is a guide for the creation of a release of Apache Accumulo. + +## Setup + +There are number of things that are required before attempting to build a release. + +1. Use gpg-agent, be sure to increase the gpg-agent cache timeout (via .gnupg/gpg-agent.conf) to ensure that the agent doesn't require re-authentication mid-build as it will cause things to fail. If you do not have a GPG key, reference the very thorough [ASF release signing documentation][1] +2. Make sure the system you're using is able to creation RPMs and DEBs. +3. Ensure that you're using the correct major release of Java (check javadoc too). +4. Ensure that you're building Apache Accumulo with a username that has the same name as your Apache ID (this is due to + the maven-release-plugin and staging the release candidate). +5. Update the CHANGES file so that it's in sync with Jira (manual process). +6. Ensure that you have a texlive distribution installed so you are able to build the documentation. +7. Have a clean workspace before starting. + +Given all of this, it's recommended that you only attempt making a release from a GNU/Linux machine. + +## Create the candidate + +You should use the provided script assemble/build.sh to create the release candidate. This script is +desirable as it activates all necessary maven profiles in addition to verifying that certain preconditions +are met, like RPM signing availablilty and the ability to sign files using GPG. The --test option can +be used as a dry-run to creating a release candidate. The --create-release-candidate option should be +provided to create the actual release candidate. + +When invoking build.sh with the --create-release-candidate option, the majority of the work will be performed +by the maven-release-plugin, invoking release:clean, release:prepare, and release:perform. These will +guide you through choosing the correct versions. The default options provided should be what you choose. +It is highly recommended that an 'RC' suffix is *not* appended to the release version the the plugin prompts +you for as that will result in that version string being placed into the poms which then would require +voting to occur on artifacts that cannot be directly promoted. After the build.sh script finishes (this will +likely take at least 15 minutes, even on recent hardware), your current branch will be on the "next" version +that you provided to the release plugin. + +Likely, this process will actually fail because the maven-release-plugin is not configured to push to the +remote repository automatically, and thus, will fail; however, this is (semi-)expected. At this point, you +should have a local git-tag for the release that you're creating. At this point, you should create a branch +from the tag that was made by the release plugin which includes the _-rcN_ suffix. This way, the branch name +will correctly identify which release-candidate this is, while the contents of that tag will have the correct +versions in the pom.xml files. This also ensure that the _release:perform_ goal of the release plugin will +work as intended. + +One unwanted side-effect of this approach is that after creating this branch, but *before invoking _release:perform_*, +you must edit the release.properties to add the _-rcN_ suffix to the value of scm.tag. Otherwise, the release +plugin will complain that it cannot find the branch for the release. A successful invocation of _mvn release:perform_, +a staging repository will be made for you on the [ASF Nexus server][2] which you can log into with your ASF +credentials. + +After you log into Nexus, click on _Staging Repositories_ in the _Build Promotion_ toolbar on the left side of +the screen. Assuming your build went according to plan, you should have a new staging repository made for +you. At this point, you should inspect the artifacts that were staged to ensure that they are as you expect +them to be. When you're ready to present those artifacts for voting, you need to close that repository which +will make it publicly available for other members to inspect. + +## Vote + +At this point, you should have a closed repository that's ready to vote on. Send a message to the [the dev +list](mailto:d...@accumulo.apache.org) and get the ball rolling. If the vote ultimately fails, you delete +the staged repository, clean up the branch you created (or wait until the release ultimately passes if you +choose), and fix what needs fixing. + +If the vote passes, huzzah, you're almost done. All you need to do is to promote that stage repository +using Nexus which you can do with the click of a button. These will trigger a process to get the release +out to all of the mirrors. + +## References + +Some good references that explain a few things: + +- [Christopher talks about making releases][3] +- [Publishing Maven Artifacts][4] +- [Publishing Releases][5] +- [Accumulo Release Guide][6] + + + [1]: https://www.apache.org/dev/release-signing + [2]: https://repository.apache.org/index.html + [3]: http://mail-archives.apache.org/mod_mbox/accumulo-dev/201305.mbox/raw/%3CCAL5zq9bH8y0FyjXmmfXhWPj8axosn9dZ7%2Bu-R1DK4Y-WM1YoWg%40mail.gmail.com%3E/ + [4]: https://www.apache.org/dev/publishing-maven-artifacts.html + [5]: http://www.apache.org/dev/release-publishing.html + [6]: http://accumulo.apache.org/governance/releasing.html Modified: accumulo/site/trunk/templates/sidenav.mdtext URL: http://svn.apache.org/viewvc/accumulo/site/trunk/templates/sidenav.mdtext?rev=1567814&r1=1567813&r2=1567814&view=diff ============================================================================== --- accumulo/site/trunk/templates/sidenav.mdtext (original) +++ accumulo/site/trunk/templates/sidenav.mdtext Thu Feb 13 00:04:50 2014 @@ -13,6 +13,7 @@ - [Source & Guide](/source.html) - [Git WIP](/git.html) - [Contrib Projects](/contrib.html) + - [Making Releases](/releasing.html) - [Issues](https://issues.apache.org/jira/browse/accumulo) - [Builds](https://builds.apache.org/view/A-D/view/Accumulo/) @@ -23,6 +24,7 @@ - [Screenshots](/screenshots.html) - [Papers & Other Links](/papers.html) - [Glossary](/glossary.html) + # ASF links - [Apache Software Foundation](http://www.apache.org) - [Sponsorship](http://www.apache.org/foundation/sponsorship.html)