2

Hudson ビルド サーバーと統合する自分用の小さなツールを作成しようとしています。私がぶつかった現在の障害はパフォーマンスです。すべてのジョブと最後に成功したビルドの時間のリストを取得するような簡単なことをしたいと思います。hudson API はこの情報を提供しますが、すべてを照会するか、depth=2各ジョブを個別に照会する必要があります (現在、150 件あります)。どちらのアプローチでもexclude、30 分以上かかります。これは、機敏であるべき UI では受け入れられません。この時間を 1 秒未満、できれば 0.5 秒未満にする必要があります。

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

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

4

1 に答える 1

3

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

質問のクエリには、次の URL が有効だと思います。

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

私のシステムでは、40 程度のジョブがあります。

$ 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
于 2011-01-19T18:18:31.007 に答える