9

開発環境からライブサーバーに変更を加えるための「ワンプッシュビルド」を持つことは、非常に便利であり、しばしば提唱されていることの1つです。

私はLAMPスタックで実行されている小さなチームに参加し、バージョン管理にSVNを使用しました。現在、単一の本番サーバー(開発用の別のサーバーであり、まもなく別のmysqlサーバーになります)にデプロイされています。私はちょうど今、私が乗船する前に欠けていた多くの組織的なものを整えています。

見たいです

  1. 人々が現在これをどのように行っているか(ワンステップビルド)
  2. 自分の状況に最適な方法を実装する方法を確認してください(小規模チーム、SVNを使用したLAMP環境)

私が興味を持っているいくつかの特定の課題は、データベースの変更(スキーマ)の処理と、物事を整理するために人々が使用している「パッケージ」の種類(RPM、PEARなど)です。

4

8 に答える 8

7

ハドソンと一緒にアリを使いました。チャームのように働いた。

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

デプロイされたサーバーのビルドの実行にかかる時間中にサーバーが使用できなくなるという通信の問題は解決されません。

スキーマの更新と変更のために、次の2つのことを行うようにantスクリプトを設定します。

  1. SVNに違いがある場合にのみ、スキーマを更新して実行します。
  2. スキーマの変更がビルドされた後、スキーマダンプをチェックインします。
  3. スキーマが更新されていない場合は、ダンプを使用してデータベースをロードするだけです。

正しく理解するには数回の試行が必要でしたが、突然、複数の開発者が異なるスキーマを使用しているという問題を解決しました。ダンプをインポートして開発スキーマを更新するのはとても簡単だったので、毎日それを行うことができました。

于 2009-06-15T00:09:16.350 に答える
2

します。Anthill Proという製品を使用して、すべてのビルドと展開を行います。これには、ファイルをチェックアウトし、ビルドを実行し、単体テストを実行してから、コードをサーバーにデプロイするように設定されたワークフロープロセスがあります。プロセスはコマンドラインプログラムなどを実行できるため、これを使用してほぼすべてをデプロイできます。

于 2009-06-15T00:18:24.767 に答える
2

これは環境に大きく依存するため、これに対する簡単なクックブックの答えはないと思います。何を思いついたとしても、スクリプト ベースのアプローチを強くお勧めします。デプロイ スクリプト自体がソース管理されます。これらのスクリプトは、ビルド ソリューションとのより良い統合も可能にします (以下を参照)。

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

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

このアプローチにより、データベースを最初から非常に迅速に再構築できます。

2 つのアプローチを組み合わせることで、コード ベースを複数の異なるステージング マシン、QA 環境、ベータ版などにすばやく展開できます。


もう少し複雑なシナリオでは、Kieveli などの継続的な統合ビルド サーバーを実行する必要があります。アル。これは基本的に展開全体を定期的に「再構築」するため、上記の「手動で」実行することを正確に行うためのスクリプトが含まれています。

データベース スクリプトごとにロールバック スクリプトを作成することで、データベースの展開をより高度にすることもできます。次に、それらを処理するための小さなコントローラー アプリを作成する必要があります。この種のものにはいくつかの OSS ソリューションがあり、そのうちの 1 つがニーズに合うかもしれません。

ただし、データベースを本番環境に自動展開しないようにしてください;-)

于 2009-06-15T00:23:56.843 に答える
2

PHP プロジェクトの最適なビルド ツールはおそらくPhing です。これは Ant に非常に似ていますが、PHP で記述されています。これには、svn リポジトリから何かを取得するなど、このようなものに必要なものがすべて含まれています。

于 2009-06-15T00:24:44.520 に答える
1

UNIX (および Windows) の「make」はあなたの友達です。ただし、学習曲線がありますが、それだけの価値があります。ソースの更新、コンパイル、テストなどを行うことができます。

于 2009-06-15T00:20:13.297 に答える
0

私の考えでは、1つのスクリプトですべてをまとめ、基本的にすべてのファイル/リソースをソース管理から取得し、すべての手順を実行して最終的な「製品」を作成する必要があります。

これらのステップには、最新の取得、コンパイル、製品を完成させるために必要なその他のファイルの取得、インストーラーの作成(必要な場合)、単体テストの実行、サーバーでの出力の共有(特定のプロジェクトにとって意味があるものは何でも)が含まれます。 、および新しいバージョンが作成されたことをユーザーに通知します(または、作成されていない場合はその理由をユーザーに通知します)。そして、あなたがする必要があるかもしれない他の何でも。

以前は、通常、ある種のバッチファイルから始めて、ある種のカスタマイズされたビルダーexeを作成していました。しかし、それを維持することは常に苦痛になりました。最終的に、1つをサードパーティのアプリケーションに移動します...現在は、以下の2つの製品のいずれかを使用しています。

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

http://www.finalbuilder.com/

于 2009-06-15T03:15:55.417 に答える