2010-11-30 12 views
3

私は私たちの主要な開発言語がJavaであるソフトウェア会社で働いています。当然、私たちはHudsonを連続ビルドに使用しています。これはうまく動作します。しかし、ハドソンは私たちがそれを求めている他のもののいくつかをあまり良くしていません。また、Hudsonジョブを使用してバイナリをデプロイしたり、データベースをリフレッシュしたり、負荷テストを実行したり、回帰などを実行したりします。ビルドの依存関係がある場合(つまり、負荷テストにDBリフレッシュが必要な場合)ハドソンの代替ビルドマネージャー

ビルド依存性:

はここハドソンは、私たちが本当に必要なことを行っていない一つのことだそれはではなく、ハドソンの仕事のために、Antのビルドの依存関係を構築サポートしています。私たちはURL呼び出し機能を使用して、Hudsonジョブが別のHudsonジョブを呼び出させるようにしています。問題は、ハドソンが常に200を返し、仕事が完了するまでブロックしないということです。これは、呼び出し元のジョブがa)ビルドに失敗した場合、b)失敗しなかった場合、どれくらいの時間がかかったかを認識していないことを意味します。

シェルスクリプトを使用してビルドの動作を指定する必要はありませんが、それは完全には必要ではありません。

いずれの方向もいいと思います。おそらく、Hudsonを正しい方法で使用しているわけではありません(つまり、すべてのビルドをAntビルドにする必要があります)か、ワンクリックでの展開、負荷テスト、移行、DBリフレッシュなどのために別の製品が必要なのかもしれません。

編集:

明確にするために、私たちのビルドにはパラメータによって依存関係が異なる可能性があります。私。場合によってはDBリフレッシュなしでロード・テストを行うことがあります。残念ながら、パラメータの組み合わせごとに(Joinプラグインが必要とするような)Hudsonジョブを作成すると、異なる組み合わせが数十のジョブにつながることがあるため動作しません。

+1

「依存関係を構築する」という意味を説明できますか? Hudsonプロジェクトを構成して別のHudsonビルドを起動するのは簡単です。より自動化されたものが必要ですか? –

+1

ハドソンはそれが得られるほど良好ですが、代替案は有能ではありません。それにこだわります。 – skaffman

+0

ハドソンに何をしたいのかが問題になっている場合は、セットアップと実行しようとしていることを再検討することができます(つまり、負荷テスト環境と他のビルド) –

答えて

5

ハドソンインスタンスにコマンドを発行するためのHudson用のCLIがあります。正確な詳細を知るには "help"を使います。ビルドを呼び出して仕上げを待つものがあると私は信じています。

http://wiki.hudson-ci.org/display/HUDSON/Hudson+CLI

7

私はあなたの「依存関係を構築する」の要件を理解してないと思います。任意のHudsonジョブは、別の(ダウンストリーム)ジョブをトリガーするように、または別の(アップストリーム)ジョブによってトリガーされるように構成できます。

Downstream-Ext pluginおよびJoin pluginは、ビルドの依存関係のより複雑な定義を可能にします。

+0

"ビルド依存関係"とは、ジョブAが完了して成功した場合にのみジョブBを実行するということです。ジョブAに複数の依存関係がある可能性があるため、ジョブAをジョブBで開始することはできません。 通常は、ログを元にしたシェルスクリプトの内部でジョブを実行しているため、ビルドのパラメータ私。 "db refresh"が真であればJob Aを実行し、そうでなければ実行しないでください。 –

+0

@Patrick、面白いです。私はそのような複雑な依存関係を前に走らせていません。私は、私の解決策は、Hudsonを通してスクリプトを作成するのではなく、ビルドシステムにその情報をプッシュすることだと思います。しかし、ハドソンに就職することにメリットがあると私は想像することができます。 –

2

「依存関係」のために余分な仕事が必要ですか?

あなたの依存関係は私にとっては余分なビルドステップのように聞こえます。 DBをリフレッシュするスクリプトはscmに保存することができ、このステップを必要とするすべてのビルドがチェックアウトします。パラメータ "db refresh"がtrueの場合、そのスクリプトを呼び出すことができます。これはあなたのモジュールの1つ以上を使って行うことができます。利点は何ですか?あなたのスクリプトロジックはあなたのSCMにあります(変更の履歴があるのは常に良いことです)。すべてのテストジョブに対してスクリプトを一度更新することはできます(すべて同じスクリプトをチェックアウトしているので)。さらに、テストが成功したかどうかを調べるために、いくつかのスクリプトを見る必要はありません。特に、いくつかの実行行の一部である1つのジョブがある場合、どのジョブが実行されたかを知ることは難しくなります。もう一つの利点は、あなたのハドソンでの仕事が少なく、したがって維持することがより簡単であるということです。

+0

+1、@Patrickに対する私のコメント応答がキャプチャしなかったことを表現してくれてありがとう。 –

1

あなたが探しているものはhttp://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Pluginです。このプラグインを使用すると、以前のジョブのステータスに基づいて他のジョブを実行できます。さらに下流のプロジェクトからシェルスクリプトを呼び出して、追加条件を判断することもできます。詳細な情報を得るためにAPIを呼び出すことができます。

たとえば、私たちに通知するポストビルドステップがあります。これはJSON APIを呼び出してIRCチャンネルに「すべてビルドOK」または「X、Y失敗」などの素敵なトピックを作成します。