[ANN] CruiseControl.rb 1.3.0

Dear all,

CruiseControl.rb is a continuous integration tool. Its basic purpose
in life is to alert members of a software project when one of them
checks something into source control that breaks the build. CC.rb is
easy to install, pleasant to use and simple to hack. It’s written in
Ruby.

Version 1.3.0 is yet another small release, encompassing about 6
months of not-so-very-active ongoing development (keywords: simple,
small, sweet).

First and foremost, it’s worth noticing that the default location of
CC.rb configuration files and build data has changed to $HOME/.cruise
(%USERPROFILE%.cruise on Windows).

As for the new features, release 1.3.0 has two:

Build serialization:
This is a way to ensure that CC.rb never runs more than one build at
any given time. This helps to prevent conflicts between simultaneously
running builds using the same resource (e.g., a database or a
third-party service). To enable this, add
“Configuration.serialize_builds = true;
Configuration.serialized_build_timeout = 3.hours” to site_config.rb.

Automatic purging of all builds:
CC.rb uses the local file system for data storage. If there are
several thousand build directories, this may noticeably slow down
CC.rb dashboard. Now you can automatically tell it to purge old build
directories. To enable this, add “BuildReaper.number_of_builds_to_keep
= 200” to site_config.rb.

In addition, there is an experimental plugin infrastructure (similar
to Rails plugins). If you are writing CC.rb extensions, you may want
to look at it. Start with “script/cruise_plugin list help”.

CHANGELOG

  • cruise data (build results, etc) is stored in $HOME/.cruise/ by
    default
  • builds can now be serialized - with a config option set, CC.rb
    will only run one build at a time
  • option to auto delete more than N builds
  • [experimental] plugins can be installed w/ script/cruise_plugin
    script
  • [bugfix] build requested status now stays on dashboard until a build
    starts
  • [patch] subversion external support - Nathan W.
  • [patch] relative url support - Neal Clark

LINKS

Documentation: http://cruisecontrolrb.thoughtworks.com
Downloads: http://rubyforge.org/frs/?group_id=2918
Bug tracker: http://jira.public.thoughtworks.org/browse/CCRB
Users mailing list: [email protected]

UPGRADE PROCEDURE

IMPORTANT: as you saw above, the default location of CC.rb
configuration and data changed from “wherever you extracted
CruiseControl.rb sources” to $HOME/.cruise (%USERPROFILE%.cruise on
Windows). This can mess up your current setup, if it makes any
assumptions about the location of those files, or if it runs CC.rb
processes in an environment where $HOME is not a writable directory.

  1. Consider not upgrading at all - in many cases, 1.3 adds no tangible
    value over 1.2.1.
  2. Stop CC.rb if it’s running.
  3. Rename the directory containing the earlier CC.rb version (from now
    on referred as [cruise]) to something else (e.g., [cruise].old).
  4. Make sure you don’t have $HOME/.cruise directory yet. Remove it if
    you do.
  5. Download CC.rb 1.3.0 from http://rubyforge.org/frs/?group_id=2918
  6. Extract it to [cruise] directory. Make sure that you moved the
    earlier version away from [cruise] directory (step 2 above).
  7. Copy [cruise].old/projects/ to [cruise]. Also copy
    [cruise].old/config/site_config.rb to [cruise]/config/site_config.rb.
  8. If you run CC.rb in an environment where $HOME is not a writable
    directory, specify some other directory in CRUISE_DATA_ROOT, either by
    assigning it to CRUISE_DATA_ROOT constant in site_config.rb, or
    setting an OS environment variable of the same name before starting
    CC.rb.
  9. Start CC.rb. The first time you start it, it should automatically
    move [cruise]/projects/ to $HOME/.cruise/. It will also copy
    site_config.rb to $HOME/.cruise/.

FUTURE

After this release we are:

  • migrating our RubyForge Subversion repository to Git (still on
    RubyForge), which will improve hackability by making it easier to
    maintain local branches.
  • migrating the bug tracker to LightHouse. This already happened, in
    fact.
  • making the version control interface pluggable, and implementing
    Mercurial and Git support out of the box - this functionality will be
    released in the next version - some time during the summer

Happy cruising.


Alexey V.
CruiseControl.rb [http://cruisecontrolrb.thoughtworks.com]
RubyWorks [http://rubyworks.thoughtworks.com]