Archive for the ‘Zutubi’ Category
Open Source at Zutubi
At Zutubi we’ve reaped massive benefits over the years from open source. We’ve contributed back bits and pieces in that time — feedback and patches — but always felt we could do more. You may have noticed recent posts here about some of our projects, but we thought they deserved a bit more attention. So we’ve recently launch an new open source section on our website. This is a home for a few small projects of our own that we’ve opened up to the community. We hope you find them useful!
So far we’ve listed three projects:
- android junit report: a custom test runner for Android projects that produces XML test reports in a format similar to the Ant JUnit task.
- zutubi android ant: a collection of Ant tasks that supplement the standard Android build tooling.
- zutubi diff: a Java library for reading, inspecting and applying patch files in unified diff and other formats.
Over time we hope to publish more of our work in this way. You can keep an eye out for new projects on our website and/or follow our organisation on GitHub (or indeed my own GitHub account for Android-specific projects).
And as always: feedback is welcome, so fork away!
Android: Easier Source Linking in Eclipse
In my prior post Android: Attaching Sources to Libraries in Eclipse I noted that ADT version r20 added the ability to link sources to libraries in the Android Dependencies classpath container in Eclipse. Although this was a welcome addition, the method used to link sources is a bit cumbersome: you must create a .properties file alongside each library, and add a property that points to the source jar.
I felt this could be a lot simpler if you are willing to adopt a convention for the location of source jars. Once the convention is established, adding linked sources is as simple as placing the source jar in the expected location. This makes the process as seamless as the Android Dependency container is for adding libraries in the first place.
So I’ve made this possible via a new libproperties task in my zutubi-android-ant project. This task inspects the jars in your libs/ directory, looks for corresponding source jars by naming convention, and adds appropriate .properties files when sources are found. If you’re willing to accept the default convention, where source a source jar for library libs/foo.jar is placed at libs/src/foo-source.jar, then this simple Ant target can be used to generate the required .properties files for you:
<target name="link-sources">
<zaa:libproperties/>
</target>
Of course you’ll need to import the zutubi-android-ant tasks into your build file first. If you want to ensure sources are present for all libraries, set the attribute failOnMissingSrc to true and your build will fail if any source jar is missing. You can even establish your own conventions, using a regular expression to match the libraries and a replacement string to generate paths to source jars:
<target name="link-sources">
<-- libs/alib-1.3.jar maps to libs/src/alib-src-1.3.jar -->
<zaa:libproperties failOnMissingSrc="true"
jarPattern="(.+)-([0-9.]+)\.jar"
srcReplacement="src/$1-src-$2.jar"/>
</target>
Head over to the new zutubi-android-ant home page for more details, including quick-start instructions to get the tasks installed in your build in minutes.
Pulse Continuous Integration Server 2.5 Released!
After a smooth beta period, we’re excited to announce the release of Pulse 2.5! Massive credit for the new feature and improvement ideas in this release go to the Pulse community, whose feedback was invaluable. Here’s the brief list of what’s new:
- Browse and dashboard view filtering (by project health).
- A new MSTest post-processor plugin.
- Increased visibility of build (and other) comments.
- Comments on agents, to communicate with other users.
- Properties on agents, for simpler parameterisation.
- The ability to reference properties in SCM configuration.
- The ability to configure SCMs using resources.
- A resource repository on the Pulse master.
- A new option to attach build logs to notification emails.
- Upstream change reporting (changes via dependencies).
- Downstream build notifications (again via dependencies).
- Simpler delivery of directory trees via dependencies.
- Pre-stage hooks, which run just before the stage is dispatched to the agent.
- Stage terminate hooks, allowing you to run custom cleanup.
- SCM inclusion filters, complementing existing exclusion filters.
- Inverse resource requirements (i.e. requiring the absence of a resource).
- Smart label renaming.
- A distinct warnings status for UI and API consistency.
- A separate permission for the ability to clean up build directories.
- Support for git submodules.
- Support for Subversion 1.7 in personal builds.
- Support for Perforce streams.
For more details, see the new in 2.5 page on our website. Or, why not just download Pulse and try it free today?
Pulse Continuous Integration Server 2.5 Beta!
I’m happy to report that the Pulse 2.5 release stream has been upgraded to beta! This marks completion of the 2.5 feature set. Since the alpha release, we’ve powered through more features and improvements; examples include:
- A new warning status, making it easier to work with builds with warnings.
- The ability to reference properties in SCM configuration.
- Another new stage hook points on stage termination.
- Upstream change reporting to show how dependencies influenced a build.
- Dependency notifications to show how your changes affected downstream builds.
- Artifact archives, allowing easy delivery of directory trees between projects.
- Flexible bootstrapping allows control over how your builds are prepared.
- Subversion 1.7 working copy format support.
- Git submodule support.
Our plan now is to focus on performance and stability for the next few builds before pushing 2.5 as the stable release. In the mean time you can find out more, and even try beta builds, by visiting our beta program page. Happy building!
Pulse Continuous Integration Server 2.5 Alpha!
Cobwebs may be creeping over the blog, but not over Pulse: we’ve just published the first Pulse 2.5 alpha build! The Pulse 2.5 series is focused (even more so than usual) on customer feedback. We’ve got plenty of great ideas from the Pulse community, and we’re folding in some of the best ones in this release series. Updates so far include:
- Browse and dashboard view filtering (by project health).
- A new MSTest post-processor plugin.
- Increased visibility of build (and other) comments.
- Comments on agents, to communicate with other users.
- Properties on agents, for simpler parameterisation.
- The ability to configure SCMs using resources.
- A resource repository on the Pulse master.
- A new option to attach build logs to notification emails.
- Pre-stage hooks, which run just before the stage is dispatched to the agent.
- SCM inclusion filters, complementing existing exclusion filters.
- Inverse resource requirements (i.e. requiring the absence of a resource).
- Smart label renaming.
- A separate permission for the ability to clean up build directories.
- Support for Perforce streams.
There’s plenty more to come in subsequent alpha builds, too. In fact, we’ve started the groundwork for some other larger changes already in 2.5.0.
To grab yourself a fresh-from-the-oven 2.5 alpha build, or just to find out more, head over to our alpha program page.
Pulse Sample and Community Plugins
Since version 2.0, Pulse has supported plugins to extend integration with external tools. Whenever customers have asked for help with plugin implementation, we’ve always provided samples as the easiest starting point. Seeing a complete plugin project, with build and packaging support, is the easiest way to get a new plugin up and running.
Based on this we’ve decided to start maintaining a repository of open source Pulse plugins. These will act both as samples and in some cases as early versions of plugins that may migrate into the core Pulse distribution. The sample plugins are hosted in a Mercurial repository which has an hgweb interface:
So far we have provided a sample JUnit test post-processor (simplified from the version shipped with Pulse), and the beginnings of a Subversion SCM plugin (wrapping the svn command line). Provided you have Mercurial installed, you can easily clone the samples over HTTP, e.g.:
$ hg clone http://hg.zutubi.com/com.zutubi.pulse.core.postprocessors.junits
The samples have README files to get you started.
You may notice there is a third sample: a plugin that provides basic SCM integration with Bazaar by wrapping the bzr command-line. I’m happy to report that this sample was generously donated by a member of the community, Michiel van Slobbe. Michiel is the first to try to get Pulse and Bazaar working together and we appreciate the effort! Hopefully it will provide inspiration for other community members.
Although we are happy to provide hosting for such community plugins, you may also choose your own path. Another member of the community, Orvid, is using Pulse for C#/Mono projects. Orvid has taken the initiative of writing a command plugin to integrate XBuild, the Mono equivalent of Microsoft’s MSBuild, with Pulse. You can find the XBuild plugin on GitHub:
https://github.com/Orvid/XBuildIntegration
You might also notice that Orvid has been working on a .Net wrapper for the Pulse remote API:
https://github.com/Orvid/Zutubi.Pulse.Api
These efforts are a great contribution that we are most thankful for!
Pulse Continuous Integration Server 2.4 Released!
Happy days: we’ve now released Pulse 2.4! Thanks to all those that provided feedback during the Pulse 2.4 beta period. Here’s a recap of the major updates in this release:
- Mercurial support: in the form of a new plugin.
- Maven 3 support: including a command, post-processor and resource discovery.
- Agents page updates: with graphical status and more convenient navigation.
- Reworked agent status tab: with more build links and efficient live updates.
- New agent history tab: quickly browse all builds that involved an agent.
- Reworked server activity tab: showing build stages nested under active builds.
- Pause server: admins can pause the build queue, so all triggers are ignored.
- New server history tab: showing build history across all projects.
- Restyled info and messages tabs: for both the agents and server sections.
- Improved process termination: to make terminating builds more reliable.
- Kill build action: for quicker build termination forgoing full clean up.
- Improved changelist views: these views have been reworked in the new style.
- Pinned builds: mark builds that should never be deleted or cleaned.
- Templated field actions: easily find or revert to an inherited value.
- Introduce parent refactoring: adjust your template hierarchy over time.
- Pluggable resource discovery: automatically locate build tools and libraries.
- Subversion changelist support: easily submit a changelist as a personal build.
- … and more: extra UI touches, improved performance, more plugin support implementations and more.
The new in 2.4 page on our website has more details and a few screenshots. Or you can simply download and try Pulse 2.4 for free.
Pulse 2.4 Release Candidate
After a few iterations of Pulse 2.4 beta builds, we’ve finally reached a stable enough state to declare our first release candidate. Since the original 2.4 beta post, we haven’t just been squishing bugs, but have come up with several more improvements:
- New agent history tab: quickly browse all builds that involved an agent.
- Pause server: admins can pause the build queue, so all triggers are ignored.
- Improved changelist views: these views have been reworked in the new style.
- Pinned builds: mark builds that should never be deleted or cleaned.
- Subversion changelist support: easily submit a changelist as a personal build.
- Faster browse view: most of these optimisations also appear in Pulse 2.3.
- Improved process termination: to make terminating builds more reliable.
We know from feedback that these changes will be popular! Check them out yourself: release candidate builds are available from the Beta Program page.
Pulse Continuous Integration Server 2.2!
Big news today: Pulse 2.2 has graduated to stable! This release includes a stack of new features and improvements, including:
- Build UI overhaul: all tabs improved and restyled.
- New logs tab: making it easier to access stage logs.
- Featured artifacts: choose which artifacts should appear prominently.
- Build navigator: easily move forward and backward through history.
- Working copy browser: view working copies for in progress builds.
- Move refactoring: move projects and agents in the template hierarchy.
- Template navigation: navigate directly up and down a hierarchy.
- Subscription by label: subscribe to notifications by project groups.
- Agent executing stages: see what all agents are building at a glance.
- Subversion exports: for faster and smaller builds.
- Performance improvements: key for larger installations.
See the new in 2.2 page for full details.
In conjunction with this release, we’ve also given our website a complete overhaul. The new site has a fresher look, and communicates the key features of Pulse more directly. The updates also include some new features:
- RSS feeds for news items.
- Links to our latest blog posts on the front page.
- An improved buying process, allowing multiple licenses to be purchased in one transaction.
- Self-service renewal payments – just enter your current license key and go!
- A more user-friendly downloads page.
We hope you enjoy the new release, and the new site. And please, let us know what you think!
Pulse Continuous Integration Server 2.2 Beta!
Great news: today the latest incarnation of Pulse, version 2.2, went beta! In this release we’ve focused primarily on usability, largely in the build reporting UI. A new build navigation widget allows you to easily step forwards and backwards in your build history – while sticking to the same build tab. All of the build tabs themselves have been overhauled with new styling and layout. Here’s a sneak peak at the artifacts tab, for example:
It not only shows additional information, with greater clarity, but also allows you to sort and filter artifacts so you can find the file you are after. Other UI changes go beyond style too – for example the new build summary tab shows related links and featured artifacts for the build. More information, and screenshots, are available on the new in 2.2 page.
We’ve also squeezed in some less obvious updates, such as:
- The much-requested ability to move projects and agents in the template hierarchy.
- Convenient navigation up and down the template hierarchy.
- The ability to subscribe to projects by label.
- An option to use subversion exports for smaller and faster builds.
- Improved cleanup of persistent working directories (when requesting a clean build).
- Performance improvements for large configuration sets.
The first beta build, Pulse 2.2.0, is available for download now. We’d love you to give it a spin and let us know what you think!
You are currently browsing the archives for the Zutubi category.


