Hudson -CI屏幕保护程序设置

时间:2010-10-12 06:52:37

标签: java continuous-integration hudson

HI,有没有我可以设置一个屏幕保护程序,其中包含在hudson中运行的项目列表,指示项目的状态。假设屏幕保护程序的一部分显示项目成功的绿色,如果项目无法构建,则显示红色。

屏幕保护程序可能必须分区为多个项目!!!

4 个答案:

答案 0 :(得分:8)

您可以在任何合适的环境中创建内容,例如Flex / AS3。它可以读取XML并生成您需要的屏幕保护程序设计和可执行文件(取决于您的目标平台)

您可以创建一个简单的网页并通过AJAX使用哈德森数据,并在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)创建了一个更好的视图作为全屏AIR应用程序,使用Spark组件(DataGroup + ItemRenderer)作为源http://gist.github.com/623167。构建它需要Flashbuilder4或AIR SDK。当然,它不是成品!

看起来像这样......:http://i.stack.imgur.com/8I92U.png - 当它正在监控http://deadlock.netbeans.org/hudson

答案 1 :(得分:2)

为Hudson安装Radiator View plugin;这应该提供你想要的功能。

答案 2 :(得分:1)

您可以尝试像Buildron这样的构建散热器。它也支持Hudson,并且是让整个团队了解构建状态的非常酷的方式。

enter image description here

除了3D环境外,它还有适用于iOS和Android的声音和移动应用程序,您可以在其中进行交互。

答案 3 :(得分:0)

Team Build Screen将完全满足您的需求,但目前仅支持TFS 2008/2010。幸运的是,我目前正在开发1.4.0版,其中包括对Hudson的支持。如果您有兴趣,请留意最新的源代码:http://teambuildscreen.codeplex.com/SourceControl/list/changesets。已经检查了基本支持,但尚未将其包含在发行版中。

您可以下载源代码并自行构建,该项目名为TeamBuildScreen.DesktopHudson。

有关该项目的更多详细信息,请访问:http://teambuildscreen.codeplex.com/