2011-01-18 5 views
2

私は自分自身のために、Hudson build serverと統合するための小さなツールを書こうとしています。私がヒットした現在のロードブロッキングはパフォーマンスです。私はすべての仕事のリストと最後に成功したビルドの時間を持つような簡単なことをしたいと思います。 hudson APIはこの情報を提供しますが、私はdepth=2のすべてを照会するか、個々のジョブを個別に照会する必要があります(現在150個あります)。 excludeでさえ、いずれのアプローチも30分以上かかる。これは、すばらしいUIには受け入れられません。この時間は1秒以下、好ましくは0.5秒以下にする必要があります。Hudson CI APIより優れたパフォーマンスを得るには?

私が思いついた現在の解決策は、クライアント側で大量のキャッシュを行うことです。ビルドデータは変更されないので、作業が楽になります。しかしそれはまだ多くのコーディングです。

この情報をすばやく取得する別の方法はありますか?おそらく、すべてのデータをキャッシュし、APIの速度を向上させるプラグインがありますか?ツールは通常HUDSON_HOMEにアクセスできません。

答えて

3

treeクエリパラメータを使用すると、depth=2でクエリするよりはるかに高速です。 Hudsonの組み込みAPIドキュメント(http://hudson/api/の下にを取得するデータ量を制御する)によれば、サーバーがデータを生成して破棄しないため、treeは除外よりも効率的です。

私は、次のURLは、あなたの質問では、クエリのために働くだろうと思う:

$ time curl "http://hudson/api/xml?tree=jobs\[name,lastSuccessfulBuild\[number,url,timestamp\]\]" 

<hudson><job><name>Example Windows build</name> 
    <lastSuccessfulBuild><number>7</number> 
    <timestamp>1264806194000</timestamp> 
...lots of unformatted XML... 

real 0m0.166s 
user 0m0.062s 
sys  0m0.093s 
+0

ありがとう:40っぽい仕事と私のシステムで

http://hudson/api/xml?tree=jobs[name,lastSuccessfulBuild[number,url,timestamp]] 

!どうやらそれは私たちが働いているよりも新しいバージョンになっているので、それを逃したのです。私はアップグレードについて話をしなければならない。 –

+0

@Vilxええ、ハドソンの変更ログによると、 'tree'は1.367に導入されました。その時のハドソンにはいくつかの重要なセキュリティ修正がありました。ちょうどアップグレードが必要な場合に備えてです:) –

+0

Heh、私は頼んで、アップグレードしました!そして、そうです、 'tree'パラメータは理想的です!本当にありがとう! –

関連する問題