|Version 11 (modified by manningr, 3 years ago)|
This page documents the process for producing snapshot and stable releases of the SQuirreL SQL Client. We use maven for our builds and this makes life simpler when it comes to builds and releasing. However, our users can get SQuirreL from several different locations (not just Maven Central), so releasing in some cases is a multi-step process. For any release there are three different locations where build artifacts are placed:
- Sonatype - maven artifacts that are produced are uploaded to oss.sonatype.org for staging purposes (releases are then promoted for release to Maven Central)
- SourceForge - Installers, plain zips and aggregate source zip file are uploaded to SourceForge using the File Release System (FRS).
- squirrel-sql.net - A special artifact known as the "update site" is a zip file containing a release descriptor (release.xml) and all of the core, plugin and translation artifacts required to allow users to use the software update feature. This is uploaded to a GoDaddy.com server that Rob maintains for this feature.
These pre-release steps must be taken for either type of release (Stable or Snapshot) :
- Disable continuous integration build in Hudson (During the release process, poms are updated and committed to Subversion - this just keeps Hudson from attempting to build while the release is in process, potentially resulting in failed builds in Hudson)
- Checkout the source
svn co https://squirrel-sql.svn.sourceforge.net/svnroot/squirrel-sql/trunk/sql12 sql12
- It is only necessary to do this once; thereafter use 'svn revert -R .', followed by 'svn up'
cd sql12; svn revert -R .; svn up
- Note: It is very important to ensure that there are no local modifications, so use either of the above commands for every release.
- Update the installer profile in ~/.m2/settings.xml for the appropriate destination file paths on the update site and in the File Release System (FRS) at SourceForge?:
Snapshot releases are the most frequently occurring releases and are the easiest to perform. If your settings.xml has the appropriate credentials for Sonatype, SourceForge and squirrel-sql.net, to do a release is essentially just one command:
Build and deploy the snapshot artifacts with the following command:
mvn clean deploy -DuploadUpdateSite -DuploadInstallers
The two arguments that begin with "-D" are setting properties that trigger certain maven poms to build and upload the installers and update site. Since this is normally not required for developing and building SQuirreL, the default is to not perform these actions.
Note: Don't forget to change the header in the changes.txt file (Someday, I will have maven filter in this value)
Assuming you have already checked out the source and built a release previously (this step won't hurt if a release hasn't already been performed)
Remove any files left behind by the previous release:
Create the release tag, update the pom versions for the new development version (SNAPSHOT), then check in the modified poms with the following command:
mvn release:prepare -DautoVersionSubmodules=true -Dusername=<sourceforge username> -Dpassword=<sourceforge password>
At this point, you will be prompted for the release version, release tag and new development version. By way of example, suppose that the current version in the poms is 3.2.0-SNAPSHOT, and you are trying to release version 3.2.0. In this case, the release version is 3.2.0, the release tag is squirrelsql-3.2.0 and the new development version would be 3.3.0-SNAPSHOT.
Switch to the release tag, build the artifacts, deploy them to sonatype (After releasing, the local checkout will be switched back to the trunk) :
If the release went ok, the local source should be updated to the trunk with no local changes and all of the temporary release files removed. At this point, we need to build and deploy the new development version (SNAPSHOT) to Sonatype :
mvn clean deploy
Switch back to the release tag:
svn switch https://squirrel-sql.svn.sourceforge.net/svnroot/squirrel-sql/tags/squirrelsql-<releaseversion> .
Build the installer, plainzip, source and update site artifacts and deploy them to their respective locations (We don't use 'deploy' as the goal here since we have already deployed the released version to Sonatype):
mvn clean install -DuploadUpdateSite -DuploadInstallers