Differences between revisions 42 and 43
Revision 42 as of 2014-04-17 17:24:01
Size: 19931
Revision 43 as of 2014-04-17 17:39:38
Size: 19997
Deletions are marked like this. Additions are marked like this.
Line 238: Line 238:
 1. Update STATUS again.

  Update STATUS to reflect that the release has occurred. Check in the new file.
Line 267: Line 264:

 1. Update STATUS again.

  Update STATUS (on trunk, as well as on the branch) to reflect that the release has occurred and has been announced. Check in the new file.

This page is an appendix to the overall Derby release instructions found here: DerbySnapshotOrRelease

Table of Contents

Once after candidate passes vote:

  • tally vote & announce

  • put files on mirrors
  • create doc directory (for new branches) and copy documentation from the new release
  • create web page for release
  • possibly remove old versions from the mirror directory
  • deploy to Maven repository
  • announce release
  • tag release and check in the jars (for upgrade testing)
  • update the News section of the web site
  • update the wiki's Front Page
  • merge development versions in Jira
  • update STATUS file

After a successful vote

  1. If the vote passes, put distributions onto mirrors
    • {i} First, read Apache's information about mirroring: http://www.apache.org/dev/mirrors.html and http://www.apache.org/dev/mirror-step-by-step.html. Check out the mirror distribution site, create a new directory, copy and svn add the distribution archives and their signatures/checksums and commit. (Old instructions: Copy the distribution archives and their signatures/checksums to a new directory underneath /www/www.apache.org/dist/db/derby on people.apache.org.) The directory shall be named 'db-derby-x.y.z.w' (the letters being the release version; x = major, y = minor, z = fixpack, w = point), for instance 'db-derby-'. You may need to change the permissions on the distributions and signatures/checksums to make them group writable; this will help later release managers when they need to delete old archives.

svn co https://dist.apache.org/repos/dist/release/db/derby
mkdir db-derby-x.y.z.w
cd db-derby-x.y.z.w
cd ..
svn add db-derby-x.y.z.w
svn commit db-derby-x.y.z.w
  1. Copy the latest version of the documentation to the doc directory on the website.
    • The documentation is included in the release you uploaded, but unfortunately its directory structure is not quite right for the website. If you are working on a 10.6 or earlier release branch, consult version 27 of this wiki page for instructions about what to do. Otherwise, do the following at the top of the source tree of the release branch. You will be prompted for the location of the binzip distribution (db-derby-x.y.z.w-bin.zip), the branch name (x.y), and the location of your website subversion client:

ant repackagedocs

This will create a re-arranged subdirectory of release docs under the generated subtree of your website client. The subdirectory will be called build/site/docs/x.y. If this is a new, feature release, then you will need to "svn add" build/site/docs/x.y to your website subversion space. Don't forget to change the eol style of the new html files to NATIVE. Use "svn commit" to push the newly added docs to the production website.

  1. Create a page for the release, build/update site
    • {i} For instructions on how to build the website using Forrest, please see: http://db.apache.org/derby/papers/derby_web.html

    • Create an HTML file for the release. If you are working with a 10.7 release or later, you can create the html download page by invoking the following ant target from your code client. Answer the questions which the target poses. The target will tell you where it wrote the html download page. You may still need to edit the download page in order to remove internal links, which Forrest can't process (internal links are links to anchors inside the release notes themselves). Note that you need to perform the following step from the release branch, NOT from the development trunk:

ant transformrelnotes

If you are working with 10.7 or later, pick up the following instructions at the end of (b), where you make the cgi script executable. The transformrelnotes target creates the release page and the cgi script and wires the script into cli.xconf.

If you are working with a 10.6 or earlier release, then follow these steps in order to create the html download page:

  • (!) It is a good idea to use the previous release pages as templates, filling in the changed details as necessary.

    cd src/documentation/content/xdocs/releases
    cp release-x'.y'.z'.w'.html release-x.y.z.w.html
    vi release-x.y.z.w.html

    <!> Note the following things when creating the release page:

    • Be sure to specify that the src.tar.gz requires gnu tar to unravel (because of our usage of ant tar to create this, using longfile=gnu for handling long filenames).
    • Use search-and-replace to change all occurences of the old version number to the new one.
    • Replace the old release notes section with the appropriate fragment from RELEASE_NOTES.html in the new release.

    • Remove all square brackets [] from the release notes page. When the cgi machinery sees square brackets, it truncates the release page. (Should be handled by the ReleaseNote vetter?) In addition, remove all of the blockquote tags; Forrest swallows everything bracketed by blockquotes. In addition, remove the table of contents (the table of links to anchors in the release notes); Forrest generates its own table of contents, which is sufficient; if you leave the original table in the release notes, Forrest will transform it into a list of dead links. Also remove the mini table of contents in the Issues section. Forrest will munge it for the same reason.

    • The boilerplate at the beginning of the release page contains a link to verification instructions at the end of the page. Make sure that you include the verification boilerplate at the end so that the link works.
    • Remove all internal links from the release notes (links to anchors inside the page itself). Forrest removes your anchors and insists on creating its own anchors using an id generator.
  1. In order for the release HTML file to be pulled into the build, it is necessary to add a line to the <uris> section of src/documentation/conf/cli.xconf. Near line 310 of that file, add: <uri type="append" src="releases/release-x.y.z.w.html"/> (with the correct version for your release).

  2. Add a mirroring CGI script for the release. The CGI file should have the same name as the HTML file, but obviously a .cgi extension.

    • (!) If you used the transformrelnotes target above (for a 10.7 or later release), then the cgi script has already been created for you. Otherwise, just copy release-template.cgi to release-x.y.z.w.cgi.

    • Forrest will not copy the release CGI script over unless you make a link to it from another page. Add the link to derby_downloads.html, as described below, before building.

    • Make sure that the CGI script is made executable by setting svn:executable on it

      cd src/documentation/content/xdocs/releases 
      cp release-x'.y'.z'.w'.cgi release-x.y.z.w.cgi
      svn add release-x.y.z.w.cgi      
      svn propset svn:executable ON release-x.y.z.w.cgi 

      <!> Be sure to set svn:executable also for the generated copy which forrest builds into build/site/releases.

  3. Remove mirroring for older releases which no longer require it.
    • Svn delete the CGI script. <!> Make sure you do this both in src/documentation/content/xdocs/releases and build/site/releases.

    • Edit the release page to remove the CGI boilerplate and convert the distribution links from mirror references to ordinary links. This means replacing the [preferred] tags with the URL of the archive, i.e. http://archive.apache.org/dist/.

      (!) To see what the release page should look like, look at the release page for an even older release.

      cd build/site/releases
      svn delete release-x'.y'.z'.w'.cgi
      cd -
      cd src/documentation/content/xdocs/releases
      svn delete release-x'.y'.z'.w'.cgi
      vi release-x'.y'.z'.w'.html 
  4. Update src/documentation/content/xdocs/derby_downloads.xml:

    • Add a link to the CGI script for the new release at the top of the releases section.
    • Move the previous release down to the other old releases.
    • Change the link from the CGI script to the HTML file for all releases for which you disabled mirroring (in the previous step).
  5. Update src/documentation/content/xdocs/papers/DerbyTut/install_software.xml:

    • Replace references to the old release number with the new release number.
  6. Update src/documentation/content/xdocs/manuals/index.xml:

    • Add the link to the version's manuals (which you uploaded in the previous step).

      {X} Before checking in changes to the build/site/manuals/index.html, be careful to check for changes to other areas than those actually modified - especially the japanese characters; some builds may garble this. Make sure that you see the correct copyright year at the bottom of the web pages. If the copyright year is old, update it by editing src/documentation/skinconf.xml.

  7. Run 'forrest site' at the top of the site tree.
    • {i} Forrest instructions

      {X} Due to FOR-480, the release page will be built into your $FORREST_HOME/main/site directory. You will need to copy it to the build directory.

      {X} The build process frequently will create "false modifications" in build/tmp or build/site/skin. These must be reverted before checking in the changes. Subversion may report some files as changed which should be static. Revert anything in build/site/skin or .png files under build/site/papers before committing your website changes (see the explanation).

      <!> Remember to svn add the new files and set svn:executable on the new CGI script in build/site/releases after running forrest!

      rm -rf $FORREST_HOME/main/site/*  # Remove any files from a previous build
      forrest site
      cp -r $FORREST_HOME/main/site build/site
      svn revert -R build/tmp build/site/skin
      svn add build/site/releases/release-x.y.z.w.html
      svn add build/site/releases/release-x.y.z.w.cgi
      svn propset svn:executable ON build/site/releases/release-x.y.z.w.cgi
  8. Check the changes. If they look good, 'svn commit' them.
    • <!> Verify that the new release appears on the download page. Also check you still can download any release for which you disabled mirroring. Finally check that you can access the new documentation at the documentation page.

  9. Once you have committed your changes and updated the website on people, you can review your changes by following the instructions at http://www.apache.org/dev/project-site.html

  10. If you removed mirroring for an existing release (by removing the CGI script and changing the links), you should now delete those releases from the mirror directory as it is important to keep the mirror directory tidy.
    • <!> Don't delete them until you have verified that the updated web page with new links to the archive directory actually works!

      {i} It is no longer necessary to manually copy releases to the archive. Anything placed in the mirror directory (/www/www.apache.org/dist/db/derby) will automatically be copied to the archive directory (/www/archive.apache.org/dist/db/derby).

  1. Deploy to Maven repository.
    • The detailed instructions for deploying Maven artifacts to the Maven repositories are located in the Derby source tree as maven2/README.txt. Below is a brief overview of the process.

    • If you do not already have a recent Maven distribution, download it, unpack it, and put the bin directory into your path so that you can run Maven commands. You also need GnuPG.

      • {i} As of this writing, the latest 2.x version of Maven was 2.2.1. The POMs have also been tested with Maven 3.0.4.

    • Make sure you have your private GPG key and passphrase available. It is recommended to make the passphrase available to Maven by using an agent, but alternatively you can specify it on the command line.
    • Specify or update your ASF credentials in the Maven settings.xml file as appropriate. See the guide referred to in the README for details.
    • cd into Derby's maven2 directory.

    • Compile and run SetDerbyVersion.

    • Verify the diff (svn diff from the maven2-directory).

    • Run mvn clean install

      • {i} This does not build Derby using Maven, it works by copying the pre-built jars.

        {i} If you do not want to enter your pgp credentials for each artifact, and you haven't set up a password agent, specify your credentials on the command like this: mvn "-Dgpg.passphrase=$PASSPHRASE" clean install, where $PASSPHRASE is your pgp passphrase.

    • Verify the jars installed into your local Maven repository (i.e. ~/.m2/repository/org/apache/derby).

    • Deploy the artifacts to the Apache staging repository (you may need to get off your company vpn to do this): mvn deploy

      • {i} Again, if you do not want to enter your pgp credentials for each artifact, and you haven't set up a password agent, specify your credentials on the command like this: mvn "-Dgpg.passphrase=$PASSPHRASE" deploy, where $PASSPHRASE is your pgp passphrase.

    • Revert local modifications in the maven2 directory.

    • Log in to Nexus (https://repository.apache.org/index.html) to close the temporary staging repository. Note that it took a day for the artifacts to appear in a Nexus temporary staging repository. Others can now test the Maven artifacts you have produced.

    • After a successful vote, log in to Nexus and release the temporary staging repository. If the vote doesn't pass, drop the temporary staging repository.
    • After some time, verify that the artifacts have propagated to the Maven repositories. For 10.6, artifacts appeared within a day at http://repo1.maven.org/maven2/org/apache/derby/ . It took 6 days for the artifacts to appear on the external aggregator site ( http://mvnrepository.com/artifact/org.apache.derby ).

  2. Update the release section in the Derby project DOAP file for an official release.
    • cd site-trunk
      vi doap_Derby.rdf
      svn commit

      {i} This DOAP file is the source for http://projects.apache.org/projects/derby.html . Projects are supposed to get updated periodically (you don't do anything to publish the update).

      {X} If the update doesn't get generated within a day or two, send email to derby-dev@db.apache.org letting them know you updated the file and that the update appears to be delayed (site-dev@apache.org needs to be notified). If you have to post to site-dev@apache.org, make sure that you are subscribed to that list--your question will be answered there and you won't be able to look it up later because that list is not archived publicly.

  3. Circulate a release announcement to derby-dev.
    • Include a description of the project, and a description of any significant new features or important bug fixes.

      (!) Every tech news blog remotely related to Java or databases will pick up the announcement and post it verbatim, so it's a good idea to spell check it, proofread it a couple of times, and/or get input from derby-dev on its content.

  4. Tag the release in subversion.
    • svn copy -r {rev} https://svn.apache.org/repos/asf/db/derby/code/branches/{version}/ https://svn.apache.org/repos/asf/db/derby/code/tags/{relversion}/
      svn copy -r {rev} https://svn.apache.org/repos/asf/db/derby/docs/branches/{version}/ https://svn.apache.org/repos/asf/db/derby/docs/tags/{relversion}/
      • For example:

        svn copy -r 999685 https://svn.apache.org/repos/asf/db/derby/code/branches/10.6/ https://svn.apache.org/repos/asf/db/derby/code/tags/
        svn copy -r 999685 https://svn.apache.org/repos/asf/db/derby/docs/branches/10.6/ https://svn.apache.org/repos/asf/db/derby/docs/tags/

  5. Check in a copy of the jars to the jars directory of the repository.
    • Copies of the released jars are kept in the repository for use with the upgrade tests. You can check in the new jars without having to checkout all of the old jars. First, make a non-recursive checkout of the jars directory:

      svn co -N https://svn.apache.org/repos/asf/db/derby/jars/ Then create a new directory in the checkout with the version number, copy all of the jar files into the directory, remove non-Derby jars (like the jakarta jar), then svn add the new directory and check the directory in.

  6. Wire the new release into the upgrade tests.
    • Add the new release to the OLD_VERSIONS table in org.apache.derbyTesting.functionTests.tests.upgradeTests.OldVersions.

  7. Update JIRA versions and merge development versions into released version.
    1. Mark the release id as a released version in JIRA.
      • Go to the Administration page, select Derby, then click the Manage versions link on the bottom right.
      • Click the Release link next to the version id of the release and add the release date. In addition, you may need to create a new version id for the next release vehicle on the branch.
    2. The older development versions used for tracking changes between releases are no longer needed, and old versions should be merged into the release version. E.g. for the release,,,,, and need to be merged into the released
      • Click the Merge button next to the oldest release.
      • Select all the versions in the list on the right to merge and then the released version to merge to on the left (in the example above, this would be
      • Click the Merge button and confirm the merge.
  8. Update wiki Front Page
    • Update any information about new and upcoming releases (for new releases link to the download page) on the wiki's FrontPage.

The day after that

  1. Twenty-four hours after putting the release files in the mirror directory, verify that you can reach them through a mirror (the mirroring will likely take effect long before this). Then, you should email derby-dev, derby-user, general@db.apache.org, announce@apache.org and anyone else you think might be interested an announcement concerning the release. See past release announcements for examples.

    • <!> Send the text which the community reviewed above. Note that you can only send emails to announce@apache.org from your Apache account!

  2. Update the News section of the website. This final step comes at the end because the News section needs to point at the archived email announcement of the release.
    • Update the News section at the bottom of the front page of the Derby website. Add the announcement mail to the top of the news items at http://db.apache.org/derby/index.html#News

          on website repository
          cd trunk/src/documentation/content/xdocs 
          Update News section for the new release by `vi index.xml`
          run `forrest site` on trunk, revert unnecessary changes 
          svn commit src/documentation/content/xdocs/index.xml
          cd build/site
          svn commit index.html
  3. When all shows up on the download pages and mirrors as expected, remove any old releases that are no longer needed from the mirror location. Confirm that the release you're going to remove is in the archive location (/www/archive.apache.org/dist/db/derby). Go to the location where you checked out the mirror svnpubsub site (https://dist.apache.org/repos/dist/release/db/derby). svn delete the release that's no longer needed and commit.

  1. Update STATUS again.
    • Update STATUS (on trunk, as well as on the branch) to reflect that the release has occurred and has been announced. Check in the new file.
    You're done!

ReleasePublication (last edited 2017-10-22 20:09:45 by RichardHillegas)