CCTS Continuous Integration Configuration
From CTMS_WIKI
The shared continuous integration server for the CCTS apps is hosted at Northwestern University: https://ctms-ci.nubic.northwestern.edu/hudson.
It runs Hudson and provides PostgreSQL 8.2 and Oracle XE 10g instances for database-backed testing.
Application unit test suites
Each application's unit test suite will be run separately against each supported database. In order for this to work, each application team must provide:
- The subversion URL for their application's build root or the app's CVSROOT, module, and the relative path to the build root
- A build script which includes a single task/target which performs all the steps necessary to run the application's unit tests and archive the results. This may include:
- Setting up the database schema (e.g., running database migrations)
- Performing a clean compile, including any code generation the application uses
- Enabling additional reporting (e.g., Emma or Cobertura)
- Performing code inspections (e.g., Findbugs)
- Running the unit tests and outputting a junit-style XML test report
- Archiving any reporting artifacts in the build
- Samples of any external configuration files necessary for the test to run.
- A single mailing list address which should be notified when the build fails.
The build script should be parameterized (e.g., through an ant property) to select among supported databases. PSC's build script provides an example of this — take a look at the autobuild-matrix target.
Each application will have a build for its trunk. If an application wants to have a build for another branch (e.g., the current release/bugfix branch).
Build frequency: every detected change; Hudson will poll for changes every 3 minutes.
Configurations
The basic CI configurations will be built/updated from this table. If you need to provide sample external configurations, please mail them to [1].
Highlighted items reflect current configurations which should be addressed to fit within the above list of reqs.
Project | Build root(s) | Build script | Build target | Matrix parameters | Code reporting tools | Notification address |
C3PR | https://gforge.nci.nih.gov/svnroot/c3prv2/trunk/c3prv2/codebase | build.xml |
autobuild-ci-c3pr | database.type=postgres OR database.type=oracle | Cobertura | c3pr@semanticbits.com |
caAERS | http://gforge.nci.nih.gov/svnroot/caaersappdev/trunk/projects | build.xml |
autobuild-ci | db=postgresql or oracle | Cobertura | caaersappdev-developers@gforge.nci.nih.gov |
PSC | https://svn.bioinformatics.northwestern.edu/studycalendar/trunk
https://svn.bioinformatics.northwestern.edu/studycalendar/branches/releases/2.4-stable | build.xml | autobuild-matrix | config.database=postgresql or oracle or hsqldb-trunk | EMMA | studycalendar-builds@gforge.nci.nih.gov |
LabViewer | https://gforge.nci.nih.gov/plugins/scmcvs/cvsweb.php/caxchange/Code/?cvsroot=caxchange | build-LabViewer-CI.xml | ci | Not implemented | Not implemented | Labviewer@scenpro.com |
C3D Connector | ||||||
caXchange |
Application deployment packaging
Each application will also need to provide a build target which creates the distribution package (e.g., ZIP archive, installer, etc.) for their application. This build should run the unit tests for code verification, but does not need to generate any reports.
Build frequency TBD. Current thinking: every 6 hours.
Project | Build root(s) | Build script | Build target | Matrix parameters | Code reporting tools | Notification address |
LabViewer | https://gforge.nci.nih.gov/plugins/scmcvs/cvsweb.php/caxchange/Code/?cvsroot=caxchange | build-LabViewer-CI.xml | build_zip | Not implemented | Not implemented | Labviewer@scenpro.com |