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
- Post to the dev list a few days before you plan to do a Continuum release
- Check for SNAPSHOT dependencies, including the Continuum parent POM
- 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.
- Check trunk is building correctly (including Selenium tests) by running:
mvn clean install -Pintegration
- Execute mvn release:prepare (check that it has been properly tagged. The tag name must be continuum-[VERSION])
- Then execute mvn release:perform
- 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/
- Stage the site mvn -Ptag site-deploy from the continuum-docs module of the release tag or target/checkout directory
- 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.
- 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
- 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
- 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
- Execute fix permissions scripts. Login to people.apache.org
/www/people.apache.org/repo/m2-snapshot-repository/fix-permissions.sh
- 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.
- Update the doap_Continuum.rdf file in https://svn.apache.org/repos/asf/continuum/trunk to reflect the new version available.
- Publish the reference docs (mvn site site:stage scm-publish:publish-scm from the release tag or previous target/checkout directory.
- Update JIRA to indicate the version is released
- 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