Checking Pulse: CI Server initial impressions

May 2, 11:27 AM

A new entrant into the crowded CI Server market is the cleverly named Pulse by startup Zutubi. I tried the Version 1.0.1 “beta” and made a few a notes along the way1.

After downloading the hefty 17 meg binary, installation was pretty painless: extract, set PULSE_HOME and then run (requires JDK5.0). This starts up a Jetty-based server that hosts Pulse. The rest of the initial configuration is via a web-based wizard in the de jour Web 2.0 motif (think oversized sans font in off-black).

Setting up my first project was relatively painless, up until the point of getting Pulse to check out my project from SVN. Despite a slick “check this connection” process which reported no problems, when actually triggering a build Pulse failed to checkout anything except the directories of the project, which lead to build doom. The Pulse developers are aware of this problem – apparently related to the newish version of SVN we are using – and are promising a fix in short order. I guess this kind of problem comes with the territory of a beta.

To continue the trial I switched to a project we have still under CVS control, and here everything went smoothly. After a entering a few CVS vitals and manually triggering a build I was presented with a self-refreshing page that reported build progress. When completed I was able to inspect the build log, both in “decorated” (think simple colour markup) and raw mode.

Some random feature highlights

  • per-user views and security, although its fairly basic at the moment (I’d expect customers will want to see per-project permissions).
  • Builds can be triggered by SCM checkins or via a cron scheduler.
  • I could see from the Server config screens the ability to configure notifications in RSS, email and via Jabber. I didn’t get around to trying these out.
  • The doco promises to integrate JUnit-style test results as “first class reports”. Again, I ran out of time to try this out.

A few areas for improvement

  • There could be more feedback during the build. It would be nice if I could watch a streaming log of build progress – this would be particularly helpful in debugging builds.
  • Our projects need to be tested on multiple JDKs and support for this is currently missing in Pulse. Again the Pulse crew are on top of this one a promising multi-JDK support in a future version.

Advantages over CruiseControl

Going from download to building a project from our SCM took me about 10 minutes, even with a hiccup with the SVN support. The wizards simplify the process of installation and project configuration; the learning curve here is considerably more gentle than that faced by first timers grokking the cryptic CruiseControl config file.

Over all Pulse is a polished app with an impressive number of boxes ticked for a initial release. The relatively painless installation and config means the barrier to adoption is low – this alone should ensure an audience for Pulse amoungst time-poor developers. I’ll revisit it when SVN support has been improved and it provides multi-JDK support.

1 Disclaimer: I used to work with Dan from Zutubi :-)

Comments:

  1. Have you tried Luntbuild – it is equally slick compared to Cruise Control Oliver    May 2, 02:30 PM    #
  2. Luntbuild might be slick but it’s not built by a fellow Cortesian ;-)

    Gotta support the fellowship. — CeeCee    May 2, 08:42 PM    #
  3. Re testing on multiple JDKs, isn’t that something your Ant build script should take care of? That is, you have your main build that runs the same build you run on your dev machines, then you have another build target that runs your tests (and compile too if necessary) with the other JDKs you’re interested in. Forking junit off to a different jvm version is just a matter of jvm=”/MyOtherJavas/Java1.3/bin/java” or something similar.

    It seems like Pulse would have to go out of its way to keep that from working. john    May 5, 11:29 PM    #
  4. Hi John,

    You are right, we could rewrite our build files to do this, but it would require us to load a per-developer properties file containing properties that tell Ant where the developer has the various JDKs are installed on their system. Since it isn’t a normal developer activity to run tests with multiple JDKs, we haven’t got around to doing that – instead configuring our CI tool to do it for us (easy in Anthill Pro)

    Cheers,
    -Brendan Brendan Humphreys    May 6, 03:53 PM    #
  5. Please check our Parabuild – it doesn’t have any of the mentioned problems. Slava Imeshev    May 15, 06:52 AM    #

Blog roll

Codefeed
Madbean Matt
Vincent Massol
Codegargle
Mike Cannon-Brookes
Oliver Burn

Recent posts

Confessions of a Samurai Coder
JavaOne 2007 - random thoughts
Sneak Preview of Clover 2
Profanity in Software Considered Dangerous
20 Candles for CVS
Checking Pulse: CI Server initial impressions
Seethed Rivers on Our Sly Brain
FishEye plugin for JIRA
The Symmetry of Stupidity
Java Language Freakshow

Blatant plugs

Clover Clover & Clover.NET: Powerful code coverage for Java, C# and VB.NET
FishEye FishEye: datamining, browsing, monitoring for CVS, SVN, and Perforce
Crucible Crucible: efficient, distributed and process-neutral peer code review
Cenqua Cenqua: dedicated to the creation of practical, useful tools for software developers