Building (Teneo) with Buckminster and Hudson
Recently I had to make a decision on how to setup a new continuous build environment for Teneo. After some studying I came to the conclusion that there where two main options: Athena and Buckminster. In both cases I wanted to make use of Hudson to trigger the builds and collect build results.
For Teneo I chose Buckminster because:
- I liked the way it auto-retrieves dependencies from cvs, update sites (local and remote) and many other source formats.
- Dependencies are mostly derived automatically from the MANIFEST.MF and feature.xml files in the plugin/feature projects.
- Buckminster creates workspaces with target platforms, the main other steps (building, testing) are done from these. This is a quite understandable process as it is very similar to a setup in the IDE itself.
- Buckminster has good documentation and an active forum/newsgroup with very responsive committers/developers.
The Teneo build is done by an ant script which calls Buckminster to execute specific steps. The build consists of two parts: build/create update site and build test plugins/run test cases. For a detailed description of the Teneo build setup (Buckminster and Hudson) see this wiki page.
With the new build setup it is very easy to do a local Teneo build:
cvs -d :pserver:email@example.com:/cvsroot/modeling co -d \
This executes the same steps as with a hudson-hosted build: download buckminster, check out all the projects from cvs, do a build of the core Teneo plugins, download the test projects from cvs, build them and run the tests. The output of the build can be found in the build folder which is created next to the org.eclipse.emf.teneo.releng.buckminster folder. The workspaces (build/workspace and test/workspace) can be opened in Eclipse.
The build is setup as a job in Hudson hosted at eclipse.org, Hudson takes care of the following:
- watches cvs for changes
- triggers a build when a cvs change is detected, triggering a build means for Teneo starting an ant script.
- collects the build result (failure/success) and test results, Hudson reads defined output folders/locations and parses test result xml files.
To see the build running live on Hudson hosted at eclipse.org see this page (note link can require login).
I have written a fairly detailed description on how the Teneo build has been setup (using Buckminster and Hudson). I think/hope that it can be useful for other eclipse.org projects to look at when setting up their build using Buckminster/Hudson.