Publishing The Release - Step By Step

Introduction

This document gives step-by-step instructions for publishing a release. These instructions assume that the component uses Maven to build the site.

The starting point for this document is that a release candidate has been created and a [VOTE] successfully passed. Guidelines for these preparations can be found here.

In particular, it is assumed:

  • The signed release candidate source and binary distributions and release notes are available in ~/public_html/commons-foo-1.2-RC3.
  • The maven artifacts associated with the release are available in ~/public_html/commons-foo-1.2-RC3/maven.

1 Move Releases Into Distribution Directories

On people.apache.org, change directory to the distribution directory for your component:

      cd /www/www.apache.org/dist/commons/foo/ 

Move source distributions, their detached signatures and md5 sums into position. All source versions live in the source subdirectory.

      mv ~/public_html/foo-1.2-RC3/commons-foo-1.2-src* source 

Move the binary distributions, their detached signatures and md5 sums into position. All binary versions live in the binaries subdirectory. [Note: the source must have been moved already, otherwise the following command will also be applied to the source files.]

      mv ~/public_html/foo-1.2-RC3/commons-foo-1.2* binaries 

Double check the permissions for both binaries and source distributions. The file permissions should be "-rw-rw-r--" and the group should be "commons", for example:

      -rw-rw-r--  1 userid   commons     203 Feb 21 23:45 commons-foo-1.2-src.tar.gz.asc
    

2 Update Release Directory

Update README
The contents of the README.html are displayed at the bottom of the html showing the directory listing. This document should be updated to reflect the new release. If this document is not present, then copy one from an existing release directory and edit that.

Update the latest release number. Please also read through and correct any mistakes you find and fix other items (eg. urls) which need updating.

Copy the revised README.html into the binary and source directories, replacing any old versions.

Check KEYS file
Check the KEYS file located in the main release directory. This should contain all the public keys which have been used to sign Commons' releases. Make sure that this file exists and that it contains the public key you've used to sign these releases. The KEYS file gives instructions on how to do this.

Symbolic Links
These are no longer to be used, so please do not use symbolic links in mirrored directories! Update RELEASE-NOTES
Replace the current RELEASE-NOTES.txt with the new release notes.

    mv ~/public_html/foo-1.2-RC3/RELEASE-NOTES.txt .
    

3 Deploy Maven Artifacts

Download maven-metadata.xml for commons foo from repo1.maven.org. This file is located in the top-level directory for the component. The file should contain a versioning element, similar to the following:

    <versioning>
      <release>1.1</release>
      <versions>
        <version>1.0</version>
        <version>1.1</version>
      </versions>
      <lastUpdated>20091011214529</lastUpdated>
    </versioning> 

Create a version element for 1.2, update the release version and update the date in the lastUpdated element:

    <versioning>
      <release>1.2</release>
      <versions>
        <version>1.0</version>
        <version>1.1</version>
        <version>1.2</version>
      </versions>
      <lastUpdated>20100401214529</lastUpdated>
    </versioning> 

Create the hash files, maven-metadata.xml.sha1 and maven-metadata.xml.md5 for the updated metadata file. If you do not have openssl or another suitable utility installed locally, you can upload the edited maven-metadata.xml file to people.apache.org and use the following commands to create these files:

    md5 -q maven-metadata.xml > maven-metadata.xml.md5
    sha1 -q maven-metadata.xml > maven-metadata.xml.sha1 

Your Maven artifacts (jar and pom files with hashes and signatures) should be placed in /www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/commons/commons-foo/1.2/ on people.apache.org. This assumes that your component has been migrated to use the org.apache.commons groupId. If the component still uses commons-foo as its groupId, the deployment location should be /www/people.apache.org/repo/m2-ibiblio-rsync-repository/commons-foo/commons-foo/1.2. If your RC directory includes a "maven" subdirectory including the maven artifacts, you can move the maven artifacts using the following commands (assuming the org.apache.commons groupId):

    mkdir /www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/commons/commons-foo/1.2
    chgrp commons ~/public_html/foo-1.2-RC3/maven/*
    chmod g+w ~/public_html/foo-1.2-RC3/maven/*
    mv ~/public_html/foo-1.2-RC3/maven/* /www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/commons/commons-foo/1.2 

Double-check permissions on the newly created directory and the deployed files. Also double-check that all of the artifacts have hashes and signature files associated with them.

The updated maven-metadata.xml and its sha1 and md5 hashes should be placed in the directory above the deployed artifacts (/www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/commons/commons-foo if org.apache.commons is the groupId).

The files placed here will be mirrored (after some delay) to the public distribution repository on http://repo1.maven.org/maven2/.

4 Test Main Site Downloads

Wait until the release files are available from the main Apache web site (http://www.apache.org/dist/commons/foo/), then confirm things are good.

Check the main directory:

  1. Examine the directory listing page. At the bottom should be found the information you entered into the README.html. Please check that this is correct.
  2. Check the KEYS file
  3. Check the RELEASE-NOTES.txt
  4. Download and verify the current distributions, the following might help committers/tools/releases/verify_sigs.sh.

Follow the links to the binaries and source directories. Check them in a similar manner.

5 Update Component Build and Website

  • Update trunk version Update current version found in pom.xml in the trunk if it has not already been done. This should be updated to a SNAPSHOT release, eg change "1.2" to "1.3-SNAPSHOT". If the component maintains an Ant build and the version is specified in build.xml, make sure to update this as well.
  • Publish the website, per the instructions here.

6 Create Announcements

Announce the availability of the new release.

Please remember to give a brief description of your component. Please also remember to remind people about verifying the signatures. The subject should be something like [ANNOUNCEMENT] Foo 1.2 Released. Send this mail from your Apache account. Please spell check the document!

Wait to send the release announcement until you have verified that

  1. The release artifacts are available on the mirrors.
  2. The component website including the updated download page has been updated on the public site http://commons.apache.org/foo.
  3. If the component publishes maven artifacts, these artifacts have been replicated to the central maven repo at repo1.maven.org. (Clear your local repo of the release artifacts and either activate the clirr report with the updated version info or update a local project with a dependency to the new release version to get maven to try to download the release artifacts. Or just access repo1 using a web browser.)

The release announcement should go to (at least) the following mailing lists:

  • announce@apache.org
  • dev@commons.apache.org
  • user@commons.apache.org

7 Post Release Cleanup

That's it! The release is out there - but there is still some tidying up to be done.

  • Remove Obsolete Releases
    Unless old versions are especially required, remove them from the dist directory. This will cause the files to also be deleted from the mirrors and save them some diskspace as well as simplifying things for users. Note that the contents of the /www/www.apache.org/dist directory is regularly copied to /www/archive.apache.org/dist and from there transferred to host archive.apache.org. Deleting files from the standard distribution directories does not delete them from the archive dist directories so users will still be able to access old files even when they are not available from the mirrors.
  • Update JIRA Mark the release as released in the JIRA project admin and CLOSE all issues RESOLVED in this release. Make sure the FIX VERSION for all issues closed with this release is set correctly to this version. If this has not already been done, create a JIRA version for the next release.
  • Update DOAP file Update the component's DOAP file with details of the released version:
          <release>
            <Version>
              <name>x.y.z</name>
              <created>yyyy-mm-dd</created>
              <revision>x.y.z</revision>
            </Version>
          </release> 
  • Update changes.xml If the component uses the maven changes plugin to maintain its changelog, fill in the release date for the just released version and create a new release element for the next release.