Martin Taal's Blog

About EMF, Teneo, CDO, Texo, Hibernate, Open-Source ERP and other topics

Building (Teneo) with Buckminster and Hudson

with 3 comments

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:anonymous@dev.eclipse.org:/cvsroot/modeling co -d \

org.eclipse.emf.teneo.releng.buckminster \

org.eclipse.emf/org.eclipse.emf.teneo/releng/org.eclipse.emf.teneo.releng.buckminster

cd org.eclipse.emf.teneo.releng.buckminster

ant

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.

PS: for those interested in build systems, it is interesting to follow the b3 developments. B3 is an incubating EMFT project which aims to simplify software build and assembly.

Advertisements

Written by martintaal

March 2, 2010 at 6:02 am

Posted in Teneo

3 Responses

Subscribe to comments with RSS.

  1. Looks great! Thanks for sharing it, the capacity to start a build from nothing but ANT is quite impressive 🙂

    Cédric Brun

    March 2, 2010 at 7:13 am

  2. Martin,

    Your build page just helped me figure out an issue with the source build that I’ve been working on for two or three days. I thought that Bucky handled the source build transparently like Athena does but it doesn’t really because the query step won’t pass due to the missing generated source. So thanks.

    I’m curious what made you go with the all ant driven approach rather than using the built-in buckminster task? I’m assuming greater flexibility but of course you could mix the two.

    Miles

    Miles Parker

    July 9, 2010 at 6:20 pm

    • Hi Miles,
      Glad that my post was of help here.

      At the time I did the build setup there was no buckminster task. I did not check the buckminster task in detail after that. The Teneo build uses multiple buckminster runs (to build and test), so I am not sure if that’s possible with the buckminster task itself. I have another project called Texo where there is an additional generate step which requires additional buckminster runs. This all seems easier to control from ant.

      gr. Martin

      martintaal

      July 19, 2010 at 11:40 am


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: