2011-08-25 42 views
0

我們使用巡航控制進行日常自動測試。我們使用JUnit框架。對於每種情況,我們都有一個除junit案例的日誌文件以外的輸出文件。構建完成後,我們將輸出文件添加到項目的工件目錄中。我們使用內置的XSL文件「unittests.xsl」來發布電子郵件結果。 最近,我想修改xsl文件「unittests.xsl」,爲每個案例添加一個超鏈接到輸出文件。以下是我試過在最開始:如何將項目屬性輸出到構建XML日誌,以便可以在XSL文件中使用它們?

<td class="unittests-data" width="300"> 
    <a href="{concat('artifacts/',$projectname,'/',$cctimestamp,'/autotest_logs/',..//..//@name,'_',..//@name,'.log')}"><xsl:value-of select="..//@name"/></a> 
</td> 

這裏的問題是,輸出文件的URL使用Web瀏覽器中打開結果頁面時可以正常工作;但結果郵件中的url不正確。在郵件中,URL被concated爲: http://localhost:18080/cruisecontrol/buildresults/artifacts/ ...

但我想要的是:

http://localhost:18080/cruisecontrol/artifacts/ ...

所以我想到的是另一種方式來解決這個問題。我的想法是,以輸出根URL到項目日誌的屬性,以使XSL文件可以得到這樣的價值:

<xsl:variable name="urlroot" select="/cruisecontrol/info/property[@name='urlroot']/@value"/> 
<td class="unittests-data" width="300"> 
    <a href="{concat($urlroot,'artifacts/',$projectname,'/',$cctimestamp,'/autotest_logs/',..//..//@name,'_',..//@name,'.log')}"><xsl:value-of select="..//@name"/></a> 
</td> 

這裏的問題是,該項目的屬性(config.xml中定義)不會輸出到項目日誌中。所以我不能這樣做。

有沒有其他辦法可以達到這個目的?提前致謝。

回答

1
  1. 創建一個XML文件來保存,你需要有在CC發佈階段
  2. 構建
  3. 將文件複製到在該CC合併目錄中填寫與屬性的XML文件的屬性構建
  4. 目標在XSL轉換

如果您在構建期間呼應性的CC數的屬性值,那麼他們在CC日誌不可預知的位置,最終結束。一個可靠的方法是創建一個專門用於你需要的東西的xml文件,並在最後將它合併到日誌中。現在,您可以可靠地定位xsl中的值。

+0

謝謝。這也是我的想法:) – adarliu

+0

解決方案的一個問題是,XML文件中的屬性不能由項目動態生成... – adarliu

+0

您有一個模板xml文件,您在構建期間填寫。它有空值開始。這就是我們所做的。它足夠動態。無論如何,xsl不會是動態的。 –

0

您可以簡單地將屬性傳遞給antbuilde並回顯它們。然後,當你合併你的日誌文件時,屬性值將會在其中。

相關問題