myGrid has a Hudson installation that performs automatic building of the Taverna source code.
Each of the projects from Subversion should be listed as a project in Hudson. (ie. every folder that is in the form net.sf.taverna.* and has a trunk/tags/branches directory structure in Subversion.)
Each of the projects should be set up with the "Poll SCM" build trigger, set to poll every 5th minute. There's a system-wide grace period of 4 minutes. What this means is that every 5th minute, for each of the projects, Hudson will do a
svn update to see if there's any changes to the code in Subversion. If that's the case, it will wait 4 minutes, and do a build of that project.
Additionally, Hudson understands dependencies, so any project that depends on the freshly built project will also be rebuilt afterwards - and so on recursively.
As Hudson uses the normal
mvn clean install procedure, any compilation failures or unit test failures will be caught, and indicated by a yellow or red ball on the front screen.
This means that after a maximum of 9 minutes (given that there are no other builds going on), a change committed to Subversion will be picked up by Hudson, compiled, tested and deployed as new snapshots.
In addition to the automatic builds on Subversion commits there's also a nightly build, initiated by the virtual Hudson project net.sf.taverna.t2.build.full.This project builds every night at 03:41, and it has "Build other projects" set towards each of the other projects. This also mean that you can force a full rebuild by clicking "Build now" on that project.
Unfortunately, Hudson also does the "Build projects that depend on me" logic, meaning that some projects are built twice or more during the night.
The [net.sf.taverna.t2.builds.taverna-workbench.maintenance] project is run every night, and does a complete checkout of the Taverna build tree on the maintenance branch. This ensures that all of Taverna can be built in one go, and is built with a Private Maven repository to verify that the code don't depend on any other builds in Hudson.
The maintenance build triggers a separate Hudson build [net.sf.taverna.t2.taverna-workbench.nightly] which provides the Nightly Snapshot - a complete, executable distribution of Taverna as of that night. This builds only the [workbench-distro module] where the nightly built distribution can be downloaded, typically called something like
Maven snapshot deployment
On success, the
net.sf.taverna.t2.builds.taverna-workbench will deploy the snapshot artifacts to myGrid's snapshot Maven repository.
So given a build succeeds, fresh snapshots will be available. That means that if any of the modules fail to build or test (say because of an API change), none of the changed artifacts will be deployed - ensuring that Maven users will always get the "latest known successful build" from the snapshot repository.
Most Maven installations checks for updates of snapshot dependencies when they are more than 24 hours out of date. You can change this setting, or if you are using Eclipse with m2eclipse, you can also force an update by right clicking and selecting Maven -> Update snapshots.
The [net.sf.taverna.t2.integration-testing] builds the integration tests from [engine/net.sf.taverna.t2.integration-testing/trunk] in SVN.
The equivalent [net.sf.taverna.t2.integration-testing.maintenance] job runs the integration test for the maintenance branch.
These tests are run separately from the normal build as they can take a while to complete, may use external web services, and require a "full" Taverna runtime that is trickier to test from individual unit tests.
Sadly, both of these integration test suites regularly have failures. Ideally a failure here should be detected and fixed immediately by the developers - and before a Taverna release there should have been a regular period of successful integration tests.
You should have access to log in to Hudson if you are a member of the
mygrid-developer group, using the same login as on this wiki and on our issue tracker Jira.