Continuum Release Guidelines

  • Continuum is versioned X.Y.Z -- Major.Minor.Build. The Major and Minor versions are set at the beginning of a series, after which we use sequential build numbers starting with .0. For example, 1.3.0, 1.3.1, 1.3.2.
  • Ideally each version is tagged and built exactly once. The Release Manager (RM) has discretion to re-build a version if something goes wrong during the release process, but once a version has been made available for public download, that version number may not be re-used.
  • During the vote, an additional qualifier is determined. For example: 1.3.0 (M1) or 1.3.7 (GA). Respectively, these mean Milestone 1 and General Availability. Qualifiers such as Alpha and Beta are also acceptable, as is RC (Release Candidate).
  • If the vote does not pass, the qualifier may be reused. For example, if 1.3.0 was meant to be Milestone 1 but does not get approved, 1.3.1 can become M1.
  • When releases are announced to the community, the additional qualifier is used in addition to the version number. For example: [ANN] Continuum 1.3.3 (Milestone 2) Release or [ANN] Continuum 1.3.6 (GA) Release
  • A qualifier can be changed by calling a new vote. If we get to 1.3.8 (M5) and decide that it has no problems and there's nothing else we want to add, we can simply re-label it GA and update the website.
  • New features may be added to 1.3.x releases until we reach GA, at which point only minor changes should be made.
  • If the vote does not pass, the binaries should be removed from the download area, and the version should be labeled "test build" on the release notes page.

Continuum Release Preparation

  1. Post to the dev list a few days before you plan to do a Continuum release
  2. Check for SNAPSHOT dependencies, including the Continuum parent POM
  3. Update continuum-docs/src/site/xdoc/release-notes.xml
    • Copy and paste the html release notes from JIRA
    • Remove the first line with the heading
  4. Make sure that you have the "release" profile set in your settings.xml as shown below.
    <profile>
      <id>release</id>
      <properties>
        <gpg.passphrase>[GPG_PASS_PHRASE]</gpg.passphrase>
      </properties>
    </profile>
  5. Set your user credentials for the stage repo in the <servers> section of your settings.xml file.

Continuum Release Process

By default, the release will be staged in http://people.apache.org/builds/continuum/${version}/staging-repo. If you want to stage it elsewhere, set the deploy.altRepository property in your settings.xml file. For example:

<deploy.altRepository>vmbuild.staging::default::http://vmbuild.apache.org/archiva/repository/staged-continuum/</deploy.altRepository>

Note: If using Archiva to deploy to, you will need to clear the deployment repository first

  1. Check trunk is building correctly (including Selenium tests) by running:
    mvn clean install -Pintegration
  2. Execute mvn release:prepare (check that it has been properly tagged. The tag name must be continuum-[VERSION])
  3. Then execute mvn release:perform
  4. ssh to people.apache.org and cd to /www/people.apache.org/builds/continuum/VERSION. Execute the following commands to copy and rename the source and binary distributions.
    svn cat http://svn.apache.org/repos/asf/continuum/project/release-script.sh > ../release-script.sh
    sh ../release-script.sh VERSION STAGING_URL
  5. Stage the site mvn site:stage-deploy -DstagingSiteURL=scp://people.apache.org/home/USERID/public_html/staging-sites/continuum/1.3.4 from the continuum-docs module of the release tag or target/checkout directory
  6. Call for a vote in the dev list and wait for 72 hours for the vote results. 3 binding votes from PMC members are necessary for the release to be finalized. Example
  7. After the vote has passed, copy the sources and binaries from people.apache.org to /www/www.apache.org/dist/continuum.
  8. To sync the JARs to the central repository, execute:
    mvn stage:copy -Dsource="[STAGE_REPO_URL]"
         -Dtarget="scp://[APACHE_USERNAME]@people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository"
         -Dversion=1.3.4 -DrepositoryId=apache.releases

    Note: Do not use Maven 2.0.9 because it has a bug when performing mvn stage:copy

    Note: You can also use scpexe:// especially if you are building from another machine using SSH agent forwarding

  9. Execute fix permissions scripts. Login to people.apache.org
    /www/people.apache.org/repo/m2-snapshot-repository/fix-permissions.sh
  10. Publish the docs with mvn site-deploy from the continuum-docs module from the release tag
  11. Update the Continuum site at https://svn.apache.org/repos/asf/continuum/site/ with the versions and release notes URL and run mvn site-deploy. Below is the list of pages that you need to update:
    • src/site/xdoc/index.xml
    • src/site/apt/known-issues.apt
    • src/site/apt/download.apt
    • src/site/apt/changelog.apt
    • src/site/resources/.htaccess - update Redirect Permanent /docs/current http://continuum.apache.org/docs/1.0.1/ to the latest released GA version
  12. Remove versions that no longer need to be downloaded from the mirror from /www/www.apache.org/dist/continuum
  13. Publish the reference docs (mvn site-deploy from the release tag. You may have to exclude the continuum-webapp module to do this, and will require MAVEN_OPTS=-Xmx256m
  14. Update JIRA to indicate the version is released
  15. Send out an announcement of the release

Verifying a Release

Download the uploaded files via wget:

 wget http://people.apache.org/builds/continuum/1.3.4/source/apache-continuum-1.3.4-src.tar.gz

Verify the signatures:

 gpg -v apache-continuum-1.3.4-src.zip.asc

Verify the checksums:

 md5sum apache-continuum-1.3.4-src.zip
 cat apache-continuum-1.3.4-src.zip.md5

 sha1sum apache-continuum-1.3.4-src.zip
 cat apache-continuum-1.3.4-src.zip.sha1

Publishing a release

Tally the vote and reply on the vote thread. I prefer not to change the subject line as it breaks threading in some clients.

Copy the distribution files over to /www/www.apache.org/dist/continuum

cp /www/people.apache.org/builds/continuum/1.3.4/apache-continuum-1.3.4-bin* /www/www.apache.org/dist/continuum/binaries/
cp /www/people.apache.org/builds/continuum/1.3.4/apache-continuum-1.3.4.war* /www/www.apache.org/dist/continuum/binaries/
cp /www/people.apache.org/builds/continuum/1.3.4/apache-continuum-1.3.4-src* /www/www.apache.org/dist/continuum/source/
cp /www/people.apache.org/builds/continuum/1.3.4/apache-continuum-buildagent-1.3.4-bin* /www/www.apache.org/dist/continuum/binaries/
cp /www/people.apache.org/builds/continuum/1.3.4/apache-continuum-buildagent-1.3.4.war* /www/www.apache.org/dist/continuum/binaries/

Promote the staged repository contents

mvn stage:copy -Dsource="http://people.apache.org/builds/continuum/1.3.4/staging-repo" \
-Dtarget="scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository" \
-Dversion=1.3.4 \
-DtargetRepositoryId=apache.releases

Note: This copies everything in the staging repo, even if you specify a version

Update the index.xml and downloads.apt pages on the main site

Publish the versioned reference docs (mvn site-deploy from a checkout of the tag)

Publish the top-level website

Announce the release on the dev and user lists

Optionally announce on the Apache announcements list (only for major versions?)

Remove old releases from /www/www.apache.org/dist (make sure to remove them from downloads.apt or the links will be broken)

Open a bottle of champagne ! :-)

Releasing the parent POM

Check out the source from https://svn.apache.org/repos/asf/continuum/parent

  • mvn release:prepare (verify that it has been properly tagged)
  • mvn release:perform (verify that it has been deployed correctly in the staging repo)
  • Update the parent POM version in Continuum at https://svn.apache.org/repos/asf/continuum/trunk (or in the branch)
  • Change the parent POM version to the continuum-parent version that has just been released
  • Commit the changes made