How to Release a JDO Distribution Distributions of JDO are built from a branch of svn into a release directory, from which it is staged and tested prior to release. Once released, it is propagated to mirror servers around the world. **MC** Distributions ... they are staged .. they are propogated **MC** or **MC** A distribution ... The process is performed by a release manager with cooperation from testers in the community. Overview of the process: The release manager branches the trunk to create a branch with the source of the distribution. The release manager modifies the branch to change dependencies from SNAPSHOT to projects in the release. The release manager builds and tests the components of the release and checks the release build into svn. The release manager publishes the release on a staging area of the apache server and calls for the community to test the release. The community tests the release. If necessary, cycle until all issues are resolved. The release manager calls for a vote to release by sending a message to the community and bcc the pmc. The message subject line contains VOTE. The community votes on the release. If necessary, cycle until issues are resolved. The release manager notifies the pmc of the successful vote outcome, sending a message with the subject line containing VOTE RESULTS. The release manager distributes the release, which is then copied to mirror sites worldwide. The release manager notifies the worldwide community of the availability of the release by sending a message to announce@apache.org. The release manager takes a little time off to rest. Detailed process steps: 1. Create a branch from the trunk svn copy https://svn.apache.org/repos/asf/db/jdo/trunk https://svn.apache.org/repos/asf/db/jdo/branches/2.0 2. Remove the projects and files that are not being released cd branches/2.0 svn rm api11 btree fostore20 query20 runtime20 ri11 tck11 JDO11.MF svn commit -m "Remove projects and files that are not being released" 3. Update dependencies in projects to be released for each project.xml in the release branch: sed /SNAPSHOT/2.0/gcd 4. Copy the JNDI implementation jars (providerutil.jar and fscontext.jar) to the branch lib/ext directory. This is needed to test the tck before dist. pushd ../.. cp trunk/lib/ext/* branches/2.0/lib/ext popd **MC** You are in branches, so isn't it just pushd ..? **MC** How about just cp ../trunk/lib/ext/* ../branches/2.0/lib/ext? 5. Build the distribution maven tck20.dist 6. Copy the source artifacts to the release area mkdir ../../release/2.0/dist/db/jdo/2.0 **MC** ../.. puts release parallel to jdo. Is this where it belongs? cp */target/distributions/*.gz $! cp */target/distributions/*.zip $! 7. Copy the maven artifacts to the release area mkdir release/2.0/dist/java-repository/javax.jdo/jars mkdir release/2.0/dist/java-repository/javax.jdo/poms mkdir release/2.0/dist/java-repository/org.apache.jdo/jars mkdir release/2.0/dist/java-repository/org.apache.jdo/poms pushd release/2.0/dist/java-repository **MC** Are these all the same release/2.0 as in step 6? Should be .. or ../... cp ~/.maven/repository/javax.jdo/jars/jdo2-api-2.0.jar javax.jdo/jars cp ~/.maven/repository/javax.jdo/poms/jdo2-api-2.0.pom javax.jdo/poms cp ~/.maven/repository/org.apache.jdo/jars/jdo2-*-2.0.jar org.apache.jdo/jars cp ~/.maven/repository/org.apache.jdo/poms/jdo2-*-2.0.pom org.apache.jdo/poms popd 8. Sign the artifacts sign-directory release/2.0/dist **MC** Right directory level? 9. Push the artifacts to the apache staging area scp -r release/2.0/dist people.apache.org:~/public_html/downloads/2.0 **MC** Right directory level? 10. Test the release from the staging area 11. After testing is complete, push the artifacts to the apache web **MC** and after voting is complete and successful ssh people.apache.org cd public_html/downloads/2.0 cp -r dist /www/www.apache.org **MC** Do they get to the mirrors automatically? 12. Update the JDO web site to point the downloads page to the release.