features

Pulse boasts all the features you expect of an fully featured automated build server, along with some that are rarely found in competing systems. The Pulse philosophy of working with the user their way drives these unique features:

detailed feature list

build any project

Pulse can build anything that can be built from a command line. Unlike other build tools, Pulse provides first class support for executing arbitrary commands. This feature is the core of the Pulse continuous integration server on which all specific tool support is built. Pulse supports the following commands:

distributed builds

Pulse has the ability to distribute builds across multiple machines ("agents"). This allows both parallel and multi-platform testing. The distributed build, model in Pulse is more powerful than simple remote building. It allows you to:

personal builds

You can submit outstanding source code changes directly to Pulse for testing before you commit them to your SCMserver. This personal build feature allows you to diagnose and fix any failures without affecting the shared code base.

This feature works particularly well with distributed builds across multiple platforms. Pulse allows developers to work in their chosen environment, and then test against multiple environments before checking in. Say goodbye to broken builds!

reports

An automated build server gathers valuable data about your builds over time. Pulse makes this data available in the form of graphical reports. These reports show the frequency and success rates for you builds, and illustrate build trends over time. For example, reports show the number of test cases run with your build day-by-day. Using this build telemetry, you can see at a glance the progress of your test suite.

capture build artifacts

The artifacts created by your build process include binary files, libraries, reports and packages. These artifacts can be easily viewed and downloaded via the Pulse web interface. The following types of artifacts are supported:

extract information

An automated build system that can tell you a build failed is not very useful unless you can find out why. Pulse allows you to extract errors, warnings and other useful information from build artifacts (including command output) via post-processing. The following post-processors are provided:

The information extracted in this way is presented directly in the build summary so there is no need to trawl through build logs.

SCM integration

Pulse supports CVS, Perforce and Subversion. Integration with these SCM servers provides:

build notifications

Pulse can notify you when a build has completed via email (plain text or HTML), Jabber instant messaging, an RSS feed or a Windows system tray client (Stethoscope). Every developer has their own notification preferences which allows them to control:

You can also configure post build actions to execute on build completion, allowing arbitrary notifications to be hooked in.

Pulse notification messages are fully customisable by writing Freemarker templates. If you prefer a different layout or format, you can easily add your own template to the list of choices provided by default.

flexible build scheduling

Pulse supports a variety mechanisms that can be used to trigger the automatic build of a project:

build history

Pulse stores a full history of all builds for your project for as long as you want. The build history includes both the build result and the working directory for the build. Build results and working directories can be purged according to rules you specify to save storage space. With the build history you can:

testing

If you are serious about continuous integration test results have to be a first-class part of the result of a build. By post-processing test reports generated during the build, test results are integrated by Pulse and reported through standard notification rules. Pulse has first-class test support that includes:

Pulse has built-in support for JUnit, CppUnit or OCUnit. test reporting. Any tool that can output a compatible XML report (e.g. TestNG) can also be integrated easily.

projects

A project in Pulse represents a single code line that you want to build. Multiple types of projects are supported. For simple requirements, ant, make, maven, maven 2 and Xcode projects can be configured via the web interface. You can also choose to create a Pulse file to describe how your project is built. This level of support for projects means that:

project groups

Larger Pulse installations can contain many projects. Pulse allows you to organise these projects into logical groups. The groups are used in the Pulse web interface to display the related projects together. You can also choose to show groups on your dashboard, and subscribe to RSS feeds for builds in a specific group.

build specifications

Pulse doesn't restrict you to building each project one way. You can specify multiple build specifications for each project for different types of builds, and trigger these specifications according to their own schedule. For example, you might run quick testing builds every 15 minutes and full acceptance tests every night. You can define:

full web interface

Pulse is set up and configured completely via the web interface. From the point you install the Pulse package to your first project build, you do not have to edit a single text file. The only text file configuration in Pulse is the optional Pulse file, which enables you to store project configuration details in your SCM system along with your source code. The web interface includes a:

build controls

Pulse allows you to view and control build activity on your server. Builds in progress can be viewed via the web interface, as well as build queues. Build management features include:

real time build logs

Not sure what your automated build server is up to? Wonder no longer with real time build logs. See the tail of the build log update in real time, even when the build is running on a remote agent! Tweak the number of lines shown and the update interval to see just what you need.

dashboard

Pulse gives each developer their own configurable view of the Pulse server. This allows developers to quickly find the information relevant to them. Users have:

customise build information

Build result reporting is a fundamental feature of the Pulse web interface. Pulse allows you to customise your view of this critical information by allowing you to choose the fields you are most interested in on any view. You can even reorder how these fields appear within a table using a simple drag and drop interface.

project homepage

Each project build by the Pulse continuous integration server has its own project home page. This is the central location for all recent activity for that project including:

changelist isolation

Who broke the build? With the changelist isolation option, you can ensure each build has at most one new source code change. If the build breaks, there will be no doubt which change it was!

role-based security

You can control access to your Pulse server using role-based security. Users can be organised into groups and assigned privileges to those groups to allow:

Optionally, you can allow anonymous access so that guest users can browse build results. You can even choose to allow users to sign up themselves as well as Link Pulse to your LDAP server for authentication.

LDAP integration

User management couldn't be simpler for those of you already using LDAP authentication. Pulse can optionally authenticate users via LDAP and you can choose to have users automatically added to Pulse if they authenticate successfully via LDAP. It is even possible to integrate your LDAP groups by creating matching Pulse groups.

repository hyperlinking

Each time you fix a bug, you diligently add the bug ID to your commit message. You can configure Pulse to recognise those IDs and link them straight to your bug tracker! You can also link from changelists to external repository viewers such as Fisheye, P4Web, Trac and ViewVC. Links are provided to view change information, download/view a file at a given revision and the diff view for a changed file.

resource dependencies

Resources dependencies such as such as compilers, libraries and runtimes required for your project can be managed via the Pulse web interface. You can:

Pulse will automatically discover and configure common resources for you!

dependent projects

Breaking projects down into components can be a great way to organise and streamline your builds. Pulse supports dependent builds with a special kind of build trigger. When a build of one project completes, you can kick off a build of a dependent project. This trigger can be filtered based on the build result, for example, you can make sure the trigger only fires after a successful build.

incremental builds

If you manage a large project with a long build cycle but require rapid feedback on source code commits, then the Pulse incremental build feature can be used. You can set up a continuous, incremental build and do full clean rebuilds overnight when the time is available. Of course you can manually force a clean rebuild at any time.

manual build properties

Once you have Pulse running your automated builds, a natural next step is to build a full releases. Often the process of building a release requires manual input of properties such as a version number. Pulse makes this simple by allowing you to configure certain build specifications to prompt for property information when they are triggered.

local build

Pulse has the unique ability to execute a build with a developer's own working copy. By installing the Pulse local build engine on their workstation, any developer can build a Pulse file project locally. Using this feature you can:

remote api

Pulse can be integrated and extended via a remote API implemented with XML-RPC. You can monitor, control and extend your Pulse server using the programming language of your choice. The remote API allows: