2009-06-15 13 views
9

開発環境からライブサーバーに変更を加えるための「ワンプッシュビルド」を持つことは、持っていることが非常にうまくあり、しばしば提唱されています。LAMPプロジェクトの "ワンステップビルド"はどのように実装しますか?

私はLAMPスタックで動作する小さなチームと一緒に来て、現在バージョン管理用にSVNを使用しています。これは現在、単一のプロダクションサーバ(開発用の別のサーバであり、まもなく別のmysqlサーバになります)に私は今、私の前に行方不明になっている多くの組織的なものを載せています。

私は

    の人がこれをやっているか
  1. (1つのステップビルド)現在
  2. は私が私の状況(SVNの小さなチーム、LAMP環境)のための最高のそれを実装する方法を見て見て好奇心

私が興味を持っているのは、データベースの変更(スキーマ)や、人が整理しておくために使用する「パッケージ」(RPMやPEARなど)を扱うことです。

答えて

7

antHudsonを使用しました。魅力のように働いた。

ハドソンは、Javaプロジェクトだけでなく、他のビルドシステムでも動作します。複数のビルドターゲットをセットアップして、自動的に、または手動で実行できます。また、単一のコマンドからビルドを実行する方法を実装する必要があります。

デプロイされたサーバーのビルドを実行するのにかかる時間中にサーバーを使用できなくなる通信上の問題は解決しません。私たちのスキーマの更新や変更のために

、2件の観光名所我々セットアップたちのAntスクリプト:

  1. 更新SVNの違いがあります場合にのみ、スキーマを実行します。
  2. スキーマ変更が作成された後、スキーマダンプをチェックインします。
  3. スキーマへの更新がなかった場合は、単にデータベース

をロードするためにダンプを使用してそれは権利を取得するために数回の試行を取るでしたが、突然、我々は複数の開発者の問題は、異なるスキーマ上にある解決していました。ダンプをインポートして開発スキーマを更新するのはとても簡単で、毎日行うことができました。

+1

ハドソンは素晴らしいです。 – stimms

2

です。私たちは、すべてのビルドとデプロイメントを行うには、Anthill Proという製品を使用します。これにはワークフロープロセスがあり、ファイルのチェックアウト、ビルドの実行、単体テストの実行、コードのサーバーへのデプロイを行います。プロセスがコマンドラインプログラムなどを実行できるように、何でも配置するために使用することができます。

1

"make" UNIX(およびWindows)はあなたの友人です。それは学習曲線があるが、それはそれの価値がある。

2

これは、あなたの環境に非常に依存するため、簡単な料理本の回答はないと思います。何を思いついても、スクリプトベースのアプローチを強くお勧めします。展開スクリプトはソース管理自体にあります。これらのスクリプトはビルドソリューションとのより良い統合を可能にします(下記参照)。

プロダクション環境で実行する最も簡単なスクリプトは、ソース管理から最新の(または特定のバージョンを取得する)コマンドです。

次の課題は、データベースの展開です。私が小規模から中規模のプロジェクトで最も好むようになったソリューションは、各データベースにスキーマバージョンテーブルを維持し、すべてのDDLとデータ更新スクリプトをソース管理(圧縮アーカイブで使用するデータソースを含む)することです。スクリプトは連続して番号が付けられ(000001 ...、000002 ...など)、実行するデプロイメントスクリプトはまず既存のデータベースをバックアップしてから、最後に実行されたデータベーススクリプトをスキーマバージョンテーブルから取得して実行しますソース管理で正しい順序で新しいデータベーススクリプトが見つかった場合は、それに応じてスキーマバージョンテーブルを更新します。

このアプローチを使用すると、データベースをゼロからすばやく再構築できます。一緒に二つのアプローチが急速に少しだけより複雑なシナリオについてなど、いくつかの異なるステージングマシンにあなたのコードベース、あなたのQA環境、ベータ、


を展開することを可能にする

、あなたがすべきKieveliらのように、統合ビルドサーバーを継続して実行します。 al。基本的には展開全体を定期的に "再構築"するため、上記の "手動で"実行するスクリプトを正確に実行するスクリプトが含まれています。

各データベーススクリプト用のロールバックスクリプトを作成することで、データベースのデプロイメントをより洗練されたものにすることもできます。あなたはそれらを処理するために少しコントローラアプリを書く必要があります。この種のものにはいくつかのOSSソリューションがあり、そのうちの1つはニーズに合っているかもしれません。 PHPプロジェクトの

しかし、本番環境にデータベースを自動展開したことがないことを確認します;-)

2

ベストビルドツールは、Antのに非常に似ていますが、PHPで書かれた、おそらくPhingです。それはあなたのsvnのレポからものをつかむような、これのような何かに必要なすべての必要なものが含まれています。

0

ワンステップビルドが完了したら、簡単に連続ビルドに切り替えることができます。

完成したすべてのビルドには、ビルドされた変更番号が中央のサーバーに表示されています。何かがコミットされると(私たちはPERFORCEを使用しますが、これはSVNで動作します)、ビルドボックスの1つのcronjobは、ビルドよりも最近の変更があること、ソースツリーをダウンロードするHTTPリクエストの発生、 (GMakeと、ほとんど)。連続的な構築は簡単な手順で完了します:)

その後、すべてのテスト自動化を自動的に実行するのは簡単なステップです。各コミット後に完全にビルドされ、テストされた(おそらく展開可能!)コード。

0

スクリプト言語の場合、ant-variantやCruiseControlのような一般的なアドバイスは、何かをコンパイルする必要がないためあまり意味がありません。

データベースに固執しましょう。継続的な統合には、自動化、自動化、自動化の3つの重要なことがあります。つまり、空のデータベースを構築したり、外部データからインポートしたり、新しいバージョンにアップグレードしたり、いくつかのスクリプトを使用してスクリプトを実行できるようにする必要があります。その良い例は、MediaWikiのようなものかもしれません。これは、PHP自体を使って設定してインストールしましょう。私は日中に新鮮なデータベースを配備し、単体テストを実行し、失敗した場合に電子メールを送信するためにbuild serverを実行することをお勧めします。

0

私はそれを考える方法は、1つのスクリプトが最終「製品」オフ

を作成するには、すべての手順を実行し、基本的には、一緒にすべてを引っ張るソースコントロールからすべてのファイル\リソースを取得したいということですこれらのステップには、最新のものを入手したり、コンパイルしたり、他のファイルを入手したり、インストーラーを作成したり、ユニットテストを実行したり、サーバー上で出力を共有したり(特定のプロジェクトでは何でもよい)新しいバージョンが作成されたことをユーザーに知らせます(または、新しいバージョンが作成されていない場合はその理由を示します)。そしてあなたがする必要のあるものは何でも。

私は通常、バッチファイルのいくつかの並べ替えで開始し、その後、いくつかの並べ替えのカスタマイズされたビルダーexeを作成しました。しかし、それを維持することは常に痛みとなりました。最終的に私は第三者のアプリケーションに移動します...今は、以下の2つの製品のうちの1つを使用しています。

http://www.kinook.com/VBP/

http://www.finalbuilder.com/

関連する問題