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
- 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>
- 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
- 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
- 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
- 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
- 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, copy the sources and binaries from people.apache.org to /www/www.apache.org/dist/continuum.
- 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
- Execute fix permissions scripts. Login to people.apache.org
/www/people.apache.org/repo/m2-snapshot-repository/fix-permissions.sh
- Publish the docs with mvn site-deploy from the continuum-docs module from the release tag
- 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
- Remove versions that no longer need to be downloaded from the mirror from /www/www.apache.org/dist/continuum
- 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
- Update JIRA to indicate the version is released
- 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