私は最初のRailsアプリに取り組んでおり、自動チェックアウトと展開を行うための効率的でクリーンなソリューションを見つけるのに苦労しています。
これまで、CruiseControl.rb(CruiseControl.NETに精通している)とCapistranoの両方を見てきました。残念ながら、私が何かを見逃していない限り、それらのそれぞれは私が望むことの約半分しか実行しません(それぞれが異なる半分を実行します)。
私がこれまでに見たものについて:
CruiseControl
- 強み
- コミット時のリポジトリチェックアウトでの自動ビルド
- また、ユニット/機能テストを実行し、報告します
- 弱点
- 組み込みのデプロイメントメカニズムはありません(これまでに見つけた最善の方法は、独自のbashスクリプトを作成することです)
キャピストラーノ
- 強み
- 展開用に構築
- 弱点
- コマンドを介して開始する必要があります(つまり、コミット時に自動チェックアウトを実行しません)
2つをつなぎ合わせる方法を見つけました。つまり、CruiseControlでリポジトリに変更をpingし、コミット時にチェックアウトを実行し、テストを実行し、展開が完了したらCapistranoを呼び出します( Capistranoもリポジトリチェックアウトを実行しますが)。
基本的に、すべてが終わったら、3つのプロジェクトを設定したいと思います。
- 開発者:チェックアウト/展開はまったく触れられていません。誰かがファイルをコミットすると、何かがファイルをチェックアウトし、テストを実行し、変更をデプロイして、レポートを返します。
- ステージ:チェックアウト/展開にはボタンをクリックする必要があります
- 製品:ボタンをクリックすると、タグ付きのチェックアウトが行われるか、ファイルがステージから移動されます
私はこれを.NETの世界でCruiseControl.NETとMSBuildの組み合わせで動作させていますが、それはかなり簡単でした。これもルビー展開の世界では一般的なパターンだと思いますが、私は簡単に誤解される可能性があります。