I just bashed out this powershell script to query the build farm status using the CC.NET server report XML page:
# get-buildstatus.ps1 $client = new-object system.net.webClient $client.Headers.add("user-agent", "PowerShell") $data = $client.openRead( 'http://builddashboard/ccnet/XmlServerReport.aspx' ) $reader = new-object system.io.streamReader $data $s = $reader.readToEnd() $data.close() $reader.close() ([xml]$s).CruiseControl.Projects.Project | ft;
Wicked simple - the WebClient class is used to connect to the build dashboard, and a stream reader object pulls the farm data. The data is XML, which PowerShell considers warm butter and happily pivots and formats as a pretty table:
> get-buildstatus name category activity lastBuildStatu lastBuildLabel lastBuildTime nextBuildTime webUrl s ---- -------- -------- -------------- -------------- ------------- ------------- ------ SuperDuo 3.... Pending Success SuperDuo_14890 2009-07-21T... 2009-07-21T... http://buil... SuperDuo Sa... Pending Success SuperDuo_14725 2009-06-16T... 2009-07-21T... http://buil... SuperDuo 2.... Pending Success SuperDuo_14706 2009-06-09T... 2009-07-21T... http://buil... SuperDuo 2.2 Pending Success SuperDuo_14888 2009-07-21T... 2009-07-21T... http://buil... ...
Of course, if you have the PowerShell Community Extensions installed, the get-url cmdlet reduces the script to a one-liner:
# get-buildstatus.ps1 ([xml](get-url 'http://builddashboard/ccnet/XmlServerReport.aspx')).CruiseControl.Projects.Project | ft;
I think I'll push this into a PowerGUI powerpack...
Super happy fun time deluxe! (Enjoy!)