Skip to end of metadata
Go to start of metadata

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.)

To group these projects in Hudson, you will find views roughly matching the Subversion categories, like engine, utilsand ui.


 

Automatic build

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.

Nightly builds

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.

There's the equivalent net.sf.taverna.t2.builds.taverna-workbench which builds from the trunk build tree.

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 taverna-nightly-2.3-SNAPSHOT-20101111-bin.zip.

Maven snapshot deployment

On success, the net.sf.taverna.t2.builds.taverna-workbench.maintenance and 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.

Integration tests

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.

User access

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.

Labels
  • None