您可以在任何合适的环境中创建一些东西,例如柔性/AS3。可以读取 XML 并生成您需要的屏幕保护程序设计和可执行文件(取决于您的目标平台)
您可以创建一个简单的网页并通过 AJAX 使用 hudson 数据,并以 HTML/CSS 呈现您的显示,这取决于您,但做起来相当简单。
Hudson 将通过其基本 API(本例中为 XML)提供当前的作业列表及其状态颜色
http://hostname:8080/api/xml
会产生类似...
<hudson>
<assignedLabel></assignedLabel>
<mode>NORMAL</mode>
<nodeDescription>the master Hudson node</nodeDescription>
<nodeName></nodeName>
<numExecutors>5</numExecutors>
<job>
<name>JobOne</name>
<url>http://hostname:8080/job/JobOne/</url>
<color>blue</color>
</job>
<job>
<name>JobTwo</name>
<url>http://hostname:8080/job/JobTwo/</url>
<color>blue</color>
</job>
<job>
<name>JobThree</name>
<url>http://hostname:8080/job/JobThree/</url>
<color>blue</color>
</job>
<overallLoad></overallLoad>
<primaryView>
<name>All</name>
<url>http://hostname:8080/</url>
</primaryView>
<slaveAgentPort>0</slaveAgentPort>
<useCrumbs>false</useCrumbs>
<useSecurity>true</useSecurity>
<view>
<name>All</name>
<url>http://hostname:8080/</url>
</view>
<view>
<name>Dashboard</name>
<url>http://hostname:8080/view/Dashboard/</url>
</view>
</hudson>
您会对这些节点感兴趣......
<job>
<name>JobOne</name>
<url>http://hostname:8080/job/JobOne/</url>
<color>blue</color>
</job>
<job>
<name>JobTwo</name>
<url>http://hostname:8080/job/JobTwo/</url>
<color>blue</color>
</job>
<job>
<name>JobThree</name>
<url>http://hostname:8080/job/JobThree/</url>
<color>blue</color>
</job>
这将很容易选择并获取所需的颜色(构建状态为红色或蓝色)和作业名称。如果您想要更多信息,我很乐意将一些基本内容放在一起。
更新:非常基本的 Flex 示例。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns="*" creationComplete="start()">
<!-- The HTTPService request -->
<mx:HTTPService id="jobsRequest" url="http://localhost:8080/api/xml" useProxy="false" method="POST">
<mx:request xmlns="">
</mx:request>
</mx:HTTPService>
<!-- basic timer to trigger the data request from Hudson -->
<mx:Script>
<![CDATA[
import flash.utils.Timer;
import flash.events.TimerEvent;
private var t:Timer = new Timer(5000, 0); // repeat every 5 seconds;
private function start():void {
t.addEventListener(TimerEvent.TIMER, getHudsonStatus);
t.start();
}
private function getHudsonStatus(e:TimerEvent):void {
jobsRequest.send();
}
]]>
</mx:Script>
<!-- the view -->
<mx:DataGrid id="hudsonJobsDataGrid" x="22" y="128" dataProvider="{jobsRequest.lastResult.hudson.job}">
<mx:columns>
<mx:DataGridColumn headerText="Name" dataField="status"/>
<mx:DataGridColumn headerText="Status" dataField="color"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>
这非常糟糕,但它正在执行您需要的数据检索,Flex 4或Silverlight将为您提供更好的数据驱动列表,使用ItemRenders(Flex4 Spark)或DataTemplates(Silverlight),我认为Flex4路线将需要更少的代码,并且如果它必须是一个屏幕保护程序,将 SWF 转换为屏幕保护程序相当简单,并且有很多工具可用于自动化该过程。
更新 2:稍微好一点的 Flex 4 示例...
我使用 Spark 组件(DataGroup + ItemRenderer)使用 Flex 4 创建了一个更好的视图作为全屏 AIR 应用程序,它在这里http://gist.github.com/623167 http://gist.github.com/623167作为源。需要 Flashbuilder4 或 AIR SDK 来构建它。当然这不是成品!
它看起来像这样...:https://i.stack.imgur.com/8I92U.png https://i.stack.imgur.com/8I92U.png- 监控时http://deadlock.netbeans.org/hudson http://deadlock.netbeans.org/hudson