5

私は自分のビルドをスピードアップしようとしていて、その方法についていくつかの考えを探していました。私は現在Hudson、プロジェクトの継続的インテグレーションサーバーとして使用していますPHP

私はAntbuild.xmlファイルを使用して、SebastianBergmannのに似たファイルを使用してビルドを実行しますphp-hudson-template。ただし、現時点では(Hudsonがクラッシュするという奇妙な問題が原因で)、実行しているのはphpDocumentor、、、phpcpdおよびだけですphpUnit。コードカバレッジレポートもphpUnit生成します。Clover

考えられるボトルネックは次のとおりです。

  1. phpDocumentor180秒かかります。私のプロジェクトには、、、、、などawsninjaの大きなライブラリがいくつか含まれています。これらのドキュメントを本当に作成する必要があるかどうかはわかりません。また、build.xmlファイルを使用してサブディレクトリ全体を無視する方法もわかりません。DirectedEdgeoauthsimplephpMailer
  2. phpUnit120秒かかります。これは、ビルドの中で実行されない唯一の部分ですparallelTask。作成されるテストが多いほど、この時間は長くなります。複数のHudsonビルドスレーブを実行し、各スレーブに個別のテストスイートを提供することを除けば、これについてどうすればよいか本当にわかりません。しかし、私もそれについてどうやって行くのか分かりません。
  3. phpcpd97秒かかります。含まれているライブラリを無視することで、解析と変換にかかる時間をなくすことができると確信しています。build.xmlファイルでこれを行う方法がわかりません。
  4. 私のサーバー:現在、私は単一のLinodeサーバーを使用しています。プロセス全体でかなり負担がかかるようです。

考えられるその他のボトルネックは、リストに追加します。

ビルド時間を短縮するためのいくつかの解決策は何ですか?

4

3 に答える 3

2
  1. phpDocumenter: phpdoc -h無視するファイル/ディレクトリのコンマ区切りリストを指定できる-iオプションを表示します。これは、phpdocbuild.xmlタグのargumentsタグに追加できます。

  2. phpUnit:データベースに対してテストを実行していると、動作が遅くなる可能性があることに気づきましたが、これを改善する方法はわかりません。

役立つ可能性のあることの1つは、毎回ドキュメンテーションを実行せず、1日に1回だけ発生するビルドの一部としてのみドキュメンテーションを実行することです(または同様のもの)

私は最近これらのツールを使い始めましたが、これらは私が発見したいくつかのことです。

于 2010-09-13T00:34:28.207 に答える
2

私はPHPの専門家ではありませんが、必要に応じてPHPUnitテストを複数のHudsonスレーブに分割できるようにする必要があります。テストスイートを分割して、各サブセットを個別の並列ハドソンジョブとして実行します。複数のCPU/コアを搭載したマシンがある場合は、そのマシンで複数のスレーブを実行できます。

あなたが言及しなかった明らかなことの1つは、ハードウェアをアップグレードするだけ、またはハドソンホストで実行されている他の機能を調べてリソースを消費するのはどうでしょうか。

于 2010-09-13T00:54:44.183 に答える
0

同様の問題が発生したときは、ドキュメントを別の夜間ビルドで実行することにしました(これもかなり遅いため、Seleniumの機能テストスクリプトと一緒に)。このように、APIドキュメントを生成することで、メインのCIビルドが遅くなることはありませんでした。

ただし、PHP Documentorがバージョン2に更新され、低速の古いバージョン1よりも速度が大幅に向上していることに注意してください。v1の2〜3倍の速度のようです。これは、CIプロセスに大きな違いをもたらします。詳細については、 http://phpdoc.org/を参照してください。

または、PHPDocの代替であるapiGenphpDoxを確認することもできます。どちらもPHPDocv1よりも確実に高速です。まだv2と比較していません。

于 2012-04-27T14:14:07.260 に答える