1

私は最初のRailsアプリに取り組んでおり、自動チェックアウトと展開を行うための効率的でクリーンなソリューションを見つけるのに苦労しています。

これまで、CruiseControl.rb(CruiseControl.NETに精通している)とCapistranoの両方を見てきました。残念ながら、私が何かを見逃していない限り、それらのそれぞれは私が望むことの約半分しか実行しません(それぞれが異なる半分を実行します)。

私がこれまでに見たものについて:

CruiseControl

  • 強み
    • コミット時のリポジトリチェックアウトでの自動ビルド
    • また、ユニット/機能テストを実行し、報告します
  • 弱点
    • 組み込みのデプロイメントメカニズムはありません(これまでに見つけた最善の方法は、独自のbashスクリプトを作成することです)

キャピストラーノ

  • 強み
    • 展開用に構築
  • 弱点
    • コマンドを介して開始する必要があります(つまり、コミット時に自動チェックアウトを実行しません)

2つをつなぎ合わせる方法を見つけました。つまり、CruiseControlでリポジトリに変更をpingし、コミット時にチェックアウトを実行し、テストを実行し、展開が完了したらCapistranoを呼び出します( Capistranoもリポジトリチェックアウトを実行しますが)。

基本的に、すべてが終わったら、3つのプロジェクトを設定したいと思います。

  • 開発者:チェックアウト/展開はまったく触れられていません。誰かがファイルをコミットすると、何かがファイルをチェックアウトし、テストを実行し、変更をデプロイして、レポートを返します。
  • ステージ:チェックアウト/展開にはボタンをクリックする必要があります
  • 製品:ボタンをクリックすると、タグ付きのチェックアウトが行われるか、ファイルがステージから移動されます

私はこれを.NETの世界でCruiseControl.NETとMSBuildの組み合わせで動作させていますが、それはかなり簡単でした。これもルビー展開の世界では一般的なパターンだと思いますが、私は簡単に誤解される可能性があります。

4

3 に答える 3

3

私はハドソンを試してみます(無料でオープンソース)。CruiseControlを使い始めましたが、設定を変更したりプロジェクトを追加したりする必要があるたびに、XML構成を再学習する必要があることにうんざりしていました。それから私はハドソンを使い始めました、そして決して振り返りませんでした。ハドソンは、ウェブ上で多かれ少なかれ完全に構成可能です。当初はJavaの継続的インテグレーションツールでしたが、.NETやRubyonRailsなどの他の開発スタック用のプラグインがあります。Rakeプラグインがあります。それが機能しない場合は、Rakeビルド/テストの実行後に任意のコマンドラインを実行するように構成できます。

また、ハドソンを動かすのは非常に簡単です。

java -jar hudson.war

または、任意のサーブレットコンテナに戦争をドロップすることができます。

于 2009-07-21T21:56:34.807 に答える
1

とにかく、2つのシステムを使用してビルドとデプロイを行います。少なくとも2つの理由:別々に実行できる必要があり、1つはデプロイ用、もう1つはビルド用の2つの構成ファイルが必要です。ただし、2つのシステムを簡単に接着できます。

簡単なcapistranoタスクを作成するだけで、テストして報告します。「実行」コマンドを使用して、好きなことを行うことができます。

コマンドラインツールが必要ない場合は、2年前にwebistranoがありました。

リポジトリとしてgitを使用する場合、 http: //github.com/benschwarz/gitnotify/tree/masterのようなものを使用してビルドデプロイをトリガーできます。

于 2009-07-21T21:45:03.567 に答える
0

少なくとも開発の自動展開については、git で利用可能なフック スクリプトを確認してください。

http://git-scm.com/docs/githooks

post-receiveフック スクリプトはリモート サーバーへのプッシュ後に実行されるため、このスクリプト に注目してください。

また、github でMislav のgit-deployをチェックする価値があります。展開の管理が非常にきれいになります。

http://github.com/mislav/git-deploy

于 2010-01-09T18:01:05.013 に答える