CCMenu logo

CCMenu

This version of CCMenu has been retired. Please visit ccmenu.org for the new version.

CCMenu displays the build status of projects on a continuous integration server as an item in the Mac's menu bar. It started as part of the CruiseControl project that built the first continuous integration server.

CCMenu allows you to:

CCMenu works with all servers that can provide a feed in the “cctray” XML format. This includes CruiseControl, CircleCI, GreenhouseCI, Jenkins, Snap CI, TeamCity, gocd, and Travis CI. A updated list is available here.

Download Report issue

The menu

The summary icon in the menu bar and the icons for the individual projects in the menu convey information about the project status:

The most recent build was successful
The most recent build failed
The project is building, previous build was successful
The project is building, previous build was broken
The project is disabled or waiting for a build agent
The server or project status are unavailable

Clicking on a project in the menu opens the project's web page in the default web browser. Depending on the continuous integration server this can be a project overview page, or a page with details about the last build.

Please note: CCMenu will simply open the link given to it by the server. Problems like the “wrong” page opening, port missing, or incorrect URL scheme, all must be fixed on the server.

Notifications

CCMenu can send notifications when a build starts or finishes. The following notifications can be configured:

  • Build finished: successful
    Previous build was successful and current build finished sucessfully, too.
  • Build finshed: broken
    Previous build was successful but current build failed.
  • Build finished: still broken
    Previous build was broken and current build failed, too.
  • Build finished: fixed
    Previous build was broken, current build finished successfully.
  • Build starting
    A new build is starting on the server.

Older versions of CCMenu, for OS X Lion and earlier, use Growl to send notifications.

Project window

The project window shows more detailed information about each of the projects, including last build time and build label. Note that you can rearrange the columns and sort the view by clicking on the column. These setting and the window size and position are persisted accross sessions.

Configuration

Screenshot: CCMenu configuration To add a new project, click on the plus icon below the project list in the preferences panel. In the sheet that opens type the URL of the server into the text field or select an existing server from the drop down list.

You can enter just the hostname or parts of the URL and CCMenu will then try various common locations for the CCTray feed. If your server has a custom configuration you may have to enter the full URL for the feed.

If you are using Travis CI please enter a URL of this form:
https://api.travis-ci.org/repositories/{user}/{repo}/cc.xml

You can drag the projects in the list to arrange the order in which they are displayed. Alternatively you can choose to have the projects sorted alphabetically or by last build time. Note, that the preference to sort the projects only affects the menu, not the project list in preferences.

The preferences window is resizable when the project list is shown.

URL schemes (available with CCMenu 13.0 or higher)

CCMenu registers two custom URL schemes. This makes it possible to create links on webpages that, when clicked, will open CCMenu and show a prefilled list of projects to add.

To create a CCMenu link, simply add "ccmenu+" to the beginning of the feed URL. For example, a link to the feed for CCMenu's own CI build would look like this:
ccmenu+https://api.travis-ci.org/repositories/erikdoe/ccmenu/cc.xml

It is not possible (yet) to create links that add a project directly.

Command line configuration

CCMenu stores its configuration using the macOS defaults system, which can be accessed using the defaults command. It is possible to load an initial configuration with a command like the following. CCMenu should not be running when the command is issued.

  defaults write net.sourceforge.cruisecontrol.CCMenu Projects '
  (
    {
      projectName = connectfour;
      serverUrl = "http://localhost:4567/cctray.xml";
    }
  )'

With more command line processing it is obviously also possible to read the existing list, add a new project, and then write the updated list.

Last but not least, the open command can be used to trigger the addition of projects from the command line, e.g.

open ccmenu+http://localhost:4567/cctray.xml

As mentioned above, it is not (yet) possible to create links that silently add a single project.

 

Download

Old versions of CCMenu (CCMenu 1.8 and older) can be downloaded from the file archive on SourceForge, where the project was hosted until 2014. Newer versions and pre-releases are available on the GitHub releases page. These versions do not update automatically and you will not be notified when new versions become available.

Unless you have a specific reason please install the current version of CCMenu from the App Store.

 

Source code

View the source on Github.

Send bug fixes and changes as pull requests on Github. You can also suggest enhancements.

Credits

Development: Erik Dörnenburg

Contributions: Luke Barrett, Marcus Müller, David Pattinson, Fabian Vogler

Background

Read Martin Fowler's article on Continuous Integration.

Find out more at the ThoughtWorks Continuous Delivery insights channel.