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

Continuum Release Process

The release will be staged in https://archiva-repository.apache.org/archiva/repository/continuum-releases/. You will need to set your user credentials for the Archiva repository in the <servers> section of your settings.xml file, under the archiva-repository.releases server ID.

  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. Copy the release artifacts from the Archiva repository to the Continuum distribution testing area. To do this, obtain the copy-release.sh script and run it locally against ~/.m2/repository, or anywhere against https://archiva-repository.apache.org/archiva/repository/continuum-releases/
    ./copy-release.sh 1.4.1 https://archiva-repository.apache.org/archiva/repository/continuum-releases/
  5. Stage the site mvn -Ptag site-deploy 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, remove versions that no longer need to be downloaded from mirrors. To do this, obtain the remove-release.sh script and run it
    ./remove-release.sh 1.4.0
  8. Copy the sources and binaries to the production Continuum distribution area (only needs to be done once for all staged releases)
    svn checkout https://dist.apache.org/repos/dist/release/continuum continuum-release
    cd continuum-release
    svn merge https://dist.apache.org/repos/dist/dev/continuum
    svn commit
  9. 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.4.1 -DrepositoryId=apache.releases

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

  10. Execute fix permissions scripts. Login to people.apache.org
    /www/people.apache.org/repo/m2-snapshot-repository/fix-permissions.sh
  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. This can be usually be addressed by changing <gaVersion>/<gaDate> or <betaVersion>/<betaDate> in pom.xml.
  12. Update the doap_Continuum.rdf file in https://svn.apache.org/repos/asf/continuum/trunk to reflect the new version available.
  13. Publish the reference docs (mvn site site:stage scm-publish:publish-scm from the release tag or previous target/checkout directory.
  14. Update JIRA to indicate the version is released
  15. Send out an announcement of the release to users@continuum.apache.org, and announce@apache.org (for GA releases). This must be sent from your @apache.org address.

Verifying a Release

Download the uploaded files:

 svn checkout https://dist.apache.org/repos/dist/dev/continuum

Alternatively, you may download individual files from that location.

Verify the signatures:

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

Verify the checksums:

 openssl md5 apache-continuum-1.4.1-src.zip
 cat apache-continuum-1.4.1-src.zip.md5

 openssl sha1 apache-continuum-1.4.1-src.zip
 cat apache-continuum-1.4.1-src.zip.sha1

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)
  • Copy the source release to the distribution area, using the copy-release.sh script referred to above:
    ./copy-release.sh parent-5
  • Conduct a vote (or do it in conjunction with a Continuum release)
  • After the vote has passed, remove versions that no longer need to be downloaded from mirrors, using the remove-release.sh script referred to above:
    ./remove-release.sh parent-5
  • Copy the sources to the production Continuum distribution area (only needs to be done once for all staged releases)
    svn checkout https://dist.apache.org/repos/dist/release/continuum continuum-release
    cd continuum-release
    svn merge https://dist.apache.org/repos/dist/dev/continuum
    svn commit
  • Update the parent POM version in Continuum at https://svn.apache.org/repos/asf/continuum/trunk (or in the branch), in the site at https://svn.apache.org/repos/asf/continuum/site, and the skin at https://svn.apache.org/repos/asf/continuum/skin/trunk to change the parent POM version to the continuum-parent version that has just been released
  • Commit the changes made

Releasing the Site Skin

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

  • mvn release:prepare (verify that it has been properly tagged)
  • mvn release:perform (verify that it has been deployed correctly in the staging repo)
  • Copy the source release to the distribution area, using the copy-release.sh script referred to above:
    ./copy-release.sh skin-1.0
  • Conduct a vote (or do it in conjunction with a Continuum release)
  • After the vote has passed, remove versions that no longer need to be downloaded from mirrors, using the remove-release.sh script referred to above:
    ./remove-release.sh skin-1.0
  • Copy the sources to the production Continuum distribution area (only needs to be done once for all staged releases)
    svn checkout https://dist.apache.org/repos/dist/release/continuum continuum-release
    cd continuum-release
    svn merge https://dist.apache.org/repos/dist/dev/continuum
    svn commit
  • Update the site.xml in Continuum at https://svn.apache.org/repos/asf/continuum/trunk and in the site at https://svn.apache.org/repos/asf/continuum/site
  • Commit the changes made