私たちは、あなたが説明したのと同様の展開を行うために Phing を使用します。また、プロジェクトには Symfony フレームワークも使用しています (これはそれほど重要ではありませんが、Symfony はさまざまな環境の概念をサポートしているため、プラスです)。
ただし、データベース、フロント コントローラーなどのさまざまな構成ファイルを作成する必要があります。
そのため、さまざまな環境の構成を定義する build.properties を含むフォルダーを作成することになりました (この場合、製品を出荷するさまざまなクライアントの構成も定義します)。このフォルダは、svn externals を使用してファイル構造にリンクされています (これも必要ありません)。
次に、Phing の build.xml ファイルは、プロパティ ファイルをコマンド ラインのパラメーターとして受け取り、そこから値を取得して、必要なすべての構成ファイル、コントローラー、およびその他の環境固有のファイルを生成します。構成をテンプレート ファイルに保存し、Phing のコピー/フィルター機能を使用して、テンプレート内のプレースホルダーを特定の値に置き換えます。
特定の環境を構成するタスク全体は、次のように簡単になります。
phing configure-environment -DpropertyFile=./build_properties/build.properties.prod
ビルド ファイルpropertyFile
で、プロパティ ファイルを指定するプロパティが定義されているかどうかを確認し、.xml を使用してファイルをロードします<property file="./build_properties/build.properties.prod" override="true" />
。次に、必要に応じて値を使用して魔法を実行します。
svn checkout/update を引き続き使用して、結果のすべての構成ファイルを svn ignore に入れることができます (これらは phing によって生成されます)。Phing では、実際に追加の手順を使用します。最終的にこれらの手順により、Linux シェル インストールの自己展開パッケージが生成されます。これは Jenkins で自動的に生成されます。次に、パッケージをクライアントに送信するか、サポート チームが Jenkins からパッケージを取得して、パッケージを実行するだけで展開全体を行うことができます (実稼働サーバーへの手動展開を引き続き好みます)、または Jenkins が自動的に展開することができます (たとえば、テストなど)。サーバー)。
必要に応じて、さらに情報を書いていきます。