This document will help you upgrade Continuum from 1.2.x to 1.3.3 and above.
When upgrading Continuum, it could have some database model changes. Usually these changes will be migrated for you, but in some cases you may need to use a backup from the previous version and to restore the data into the new version. The Data Management tool exports data from the old database model and imports the data into the new database model.
There are 2 databases that need to be considered: one for the builds and one for the users.
There were no changes in the users database from 1.2.x to 1.3.2, so you can simply point Continuum 1.3.2 at your existing user database.
The builds database has had model changes, and will need to be exported and imported.
First, download the Data Management tools you will need. The tool is a standalone jar that you can download from the central repo.
You will need to download two versions of the tool, one for the export out of the old version and one for the import into the new version:
Note: The 1.2, 1.2.2 and 1.2.3 released versions of this tool have a bug. To export databases from 1.2.2 or 1.2.3, you will need to use version 1.2.3.1 of the tool. To export databases from 1.2, you may use the 1.1 version of the tool.
Next, follow these steps to export data from the old version
java -Xmx512m -jar data-management-cli-1.2.x-app.jar -buildsJdbcUrl jdbc:derby:${old.continuum.home}/data/databases/continuum -mode EXPORT -directory backups
Then, follow these steps to import the data to the new version
java -Xmx512m -jar data-management-cli-1.3.2-app.jar -buildsJdbcUrl jdbc:derby:${new.continuum.home}/data/databases/continuum -mode IMPORT -directory backups
Finally, be aware that sometimes the NEXT_VAL values in the SEQUENCE_TABLE need to be adjusted.
UPDATE SEQUENCE_TABLE set NEXT_VAL = (select max(systemconfiguration_id)+1 from SYSTEMCONFIGURATION) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.system.SystemConfiguration'; UPDATE SEQUENCE_TABLE set NEXT_VAL = (select max(id)+1 from BUILDQUEUE) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.project.BuildQueue'; UPDATE SEQUENCE_TABLE set NEXT_VAL = (select max(id)+1 from SCHEDULE) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.project.Schedule'; UPDATE SEQUENCE_TABLE set NEXT_VAL = (select max(id)+1 from BUILDDEFINITION) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.project.BuildDefinition'; UPDATE SEQUENCE_TABLE set NEXT_VAL = (select max(id)+1 from LOCALREPOSITORY) WHERE SEQUENCE_NAME='org.apache.continuum.model.repository.LocalRepository'; UPDATE SEQUENCE_TABLE set NEXT_VAL = (select max(id)+1 from PROJECTGROUP) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.project.ProjectGroup'; UPDATE SEQUENCE_TABLE set NEXT_VAL = (select max(scmresult_id)+1 from SCMRESULT) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.scm.ScmResult'; UPDATE SEQUENCE_TABLE set NEXT_VAL = (select max(projectdependency_id)+1 from PROJECTDEPENDENCY) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.project.ProjectDependency'; UPDATE SEQUENCE_TABLE set NEXT_VAL = (select max(id)+1 from BUILDDEFINITIONTEMPLATE) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.project.BuildDefinitionTemplate'; UPDATE SEQUENCE_TABLE set NEXT_VAL = (select max(id)+1 from ABSTRACTPURGECONFIGURATION) WHERE SEQUENCE_NAME='org.apache.continuum.model.repository.AbstractPurgeConfiguration';
Now you can start your new version of Continuum.
You can simply upgrade your users database by pointing Continuum at your existing users database.
You can also upgrade your builds database from 1.2.x to 1.3.3 or 1.3.x to 1.3.3 using Embedded Derby by simply pointing Continuum at your existing builds database.
If you're upgrading your builds database from 1.3.x to 1.3.3 using MySQL, then follow these steps
ALTER TABLE 'buildsdatabasename'.'SYSTEMCONFIGURATION' MODIFY COLUMN 'DISTRIBUTED_BUILD_ENABLED' CHAR; ALTER TABLE 'buildsdatabasename'.'PROJECTNOTIFIER' MODIFY COLUMN 'SEND_ON_SCM_FAILURE' CHAR; UPDATE SYSTEMCONFIGURATION set DISTRIBUTED_BUILD_ENABLED = 'N'; UPDATE PROJECTNOTIFIER set SEND_ON_SCM_FAILURE = 'N' WHERE SEND_ON_SCM_FAILURE = 0; UPDATE PROJECTNOTIFIER set SEND_ON_SCM_FAILURE = 'Y' WHERE SEND_ON_SCM_FAILURE != 0;