Big Visible TeamCity


Big Visible Cruise is a cool utility for adding a build information radiator to your team room. It makes your Cruise Control build status immediately clear with a large green (good) or red (bad) screen. My (admittedly limited) search for an equivalent solution for JetBrains’ TeamCity came up empty. TeamCity has a few built-in notification options, but none of them seemed to be the right fit. I toyed with many different possibilities, all of which would require more development or infrastructure than we wanted to allocate to the task. Luckily, we found a solution that cost us little time and requires very little deployment footprint.

On individual build configuration pages, there is an option to “enable status widget”. This makes the build status publicly available on your TeamCity server at http:///externalStatus.html. This is what it looks like when we expose the status of our two builds:

image

Now, we can put that up on a big monitor for everyone to see, but I don’t think it “radiates” any information – you still need to purposefully read it. However, through the power of GreaseMonkey and jQuery, we were able to modify that page to look like this:

image

Now, it is immediately clear to anyone in the room when one of our builds has a problem. The script also refreshes the page automatically every 15 seconds, which the default externalStatus.html page does not do.

You can easily recreate this using Firefox, the GreaseMonkey Add-on, and my bigvisibleteamcity.user.js GreaseMonkey extension. If you aren’t familiar with GreaseMonkey, just install the add-on, then drag the *.user.js file onto your browser window, and you will be prompted to install it.

You will need to edit the bigvisibleteamcity.user.js file to change the URL in the @include line to refer to the externalStatus.html page on your server.

I didn’t spend a lot of time on the styling, but the hooks are there if you want to. If you are familiar with javascript, it should be clear in the source how to change the refresh time, or to add support for multiple rows of boxes, etc. Let me know if you make any cool changes.

Credit due to Dovetail cohorts Chad Myers for the idea and Sam Tyson for bootstrapping me on GreaseMonkey scripting.

How we handle application configuration