2011-06-29 45 views
2

私はJenkins 1.410とEmail-Ext 2.14を使用しています。私のプロジェクトは、他のいくつかのビルドを検証し、その成果物が適切に配信されていることを確認し、その後、要約電子メールを送信するための健全性チェックです。それは大丈夫です。Jellyテンプレートでの外部XMLファイルの読み込みと解析

私は親プロジェクトのPOM.xmlを解析し、たくさんの依存関係のバージョンを抽出し、それらを電子メールのきれいにフォーマットされたセクションに含めようとしています。

質問:Jellyテンプレートでは、どのようにして外部のpom.xml(行のコレクション/配列、xml DOMオブジェクト、大きな文字列など)を読み込み、I /必要。それで、私はそれらをテーブルなどにフォーマットすることができます。

私自身のプラグインを作成する必要がありますか(これは新しいものですか)。あるいは、この機能はすでに存在していますか?

ありがとうございます。

答えて

2

この機能は既にEmail-extプラグインにあります。 http://commons.apache.org/proper/commons-jelly/libs/xml/tags.html

jenkinsジョブワークスペースにあるpom.xmlファイルを解析する方法の例を以下に示します。

<j:set var="WORK_SPACE" value="${buildenv.get('WORKSPACE')}"/> 
<x:parse xml="${WORK_SPACE}/pom.xml" var="myxmldoc"/> 

<!--select element with particular attribute--> 
<x:set var="myvar" select="$myxmldoc/project/build/plugins/plugin[@attribute='abc']"/> 

<!--Loop through elements--> 
<x:forEach var="myloopvar" select="$myxmldoc/project/build/plugins/plugin"> 
..... 
</x:forEach> 
1

前ステップ

1. Download common-jelly package from: http://redrockdigimark.com/apachemirror/commons/jelly/binaries/commons-jelly-1.0.zip 
2. Extract the files from the zip 
3. Copy the following files: commons-jelly-tags-util-1.1.1.jar, commons-jelly-tags-xml-1.1.jar, commons-jelly-tags-fmt-1.0.jar 
4. Paste the above files at: <Jenkins server path>\war\WEB-INF\lib 
5. Restart Jenkins 

:ファイルは{myxmldoc}に読み出されると、それは、必要な属性および要素を介して照会またはループするために、標準的なXPATH表現と共に使用することができるDOM4J文書なりますXMLは次のとおりです。

<sites> 
<site> 
    <URL>http://www.google.com</URL> 
    <STATUS>200</STATUS> 
</site> 
<site> 
    <URL>http://www.yahoo.com</URL> 
    <STATUS>200</STATUS> 
</site> 
</sites> 

ゼリーコードにabc.xml上記のXMLを読む

<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:x="jelly:xml" xmlns:html="jelly:html" xmlns:util="jelly:util"> 

<j:set var="xmlFilePath" value="${build.getWorkspace().child('abc.xml')}"/> 
<util:file name="${xmlFilePath}" var="xmlFileContent" /> 
<x:parse var="myxmldoc" xml="${xmlFileContent}"/> 
<x:set var="allSites" select="$myxmldoc/sites"/> 
<table class="border"> 
<tr> 
    <th class="border1"><b>URL</b></th> 
    <th class="border1" width="140px"><b>HTTP Code</b></th> 
    <th class="border1" width="140px"><b>Status</b></th> 
</tr> 
<x:forEach var="mysite" select="$allSites/site"> 
<j:set var="myURL"><x:expr select='$mysite/URL' /></j:set> 
<j:set var="myStatus"><x:expr select='$mysite/STATUS' /></j:set> 
<tr> 
    <td class="border_test_passed"> 
    <a href="${myURL}">${myURL}</a> 
    </td> 
    <td class="border_test_total"> 
    <b>${myStatus}</b> 
    </td> 
    <td class="border_test_total"> 
    <j:choose> 
    <j:when test="${myStatus=='200'}"><img src="${rooturl}userContent/BSGreen.png" width="15px" /></j:when> 
    <j:otherwise><img src="${rooturl}userContent/BSRed.png" width="15px" /></j:otherwise> 
    </j:choose> 
    </td>      
</tr> 
</x:forEach> 
</table> 
関連する問題