CTools Build Process David Haines University of Michigan
Why a build process? Repeatable Reliable Easy Correct
Not part of build process Db conversion Infrastructure (key stores, accounts and passwords, Apache)
Build Process
CTools Instance Configuration Properties file specialized to particular instance Have production, test, load test, pilot, personal, etc.
Build Phases Identify and obtain source –Adjust source as necessary Build and package artifacts –Remove unneeded pieces Customize properties for different instances
Build Process Artifacts Server image Instance configurations (sakai.properties) Source bundle
Tools Ant scripts to checkout and compile source –Note: Different types of source may need different sub-scripts (e.g. Melete, iTunesU) Configuration file: location and SVN revision e.g. ctools.url, ctools.revision
Importance of Source Control Everything in Source Control (except secrets) Build tools Build configuration Source for Sakai and CTools Instance configuration
Build Configuration Source location and version –Svn URL for sakai, contrib repositories –e.g Include / exclude flags for specific source –usermembership.install.skip
Build Configuration (cont.) Source adjustments –Xml configuration files (grade scale xml) –patches Misc –Maven repository tag for jar/war files –Favicon file name –Common properties (melete upload path)
Source Adjustments Sometimes it's not quite right –Bugs –Localizations Sometimes it not quite enough –Adjust xml configuration files
Source adjustments (cont) Michigan –Branch only configuration information –Customize code by patch if possible –Branch code only if no other choice
Source Adjustments (cont) Code patches (bug fixes, UMich tweaks) –Specified in build-patches.xml Ant script –Take patch file (from svn diff), apply to the checked out source. Tool specific changes –Insert gradebook scales –Adjust web.xml values –Adjust registration (gradtools)
CTools Instance Configuration Have base Sakai.properties Have properties file of specific overrides for each instance e.g. Skin and serverurl vary for CTools and CTpilot
Compile Run Maven from within Ant Clean Compile Deploy
Assemble server image Produced code and deployable image, but not quite a UMich image –Remove things generated but not needed –Add image specific stuff conf/Catalina/localhost/melete.xml –Favicon
Deliver Tar file with image that can be expanded over fresh tomcat Instance files (sakai.propertes, placeholder.properties) for different instances.
Questions ?