Phingを使用して、説明したのと同様の展開を行います。私たちはまた、Symfonyフレームワークをプロジェクトに使用しています(これはそれほど重要ではありませんが、Symfonyは異なる環境の概念をサポートしていますので、それはプラスです)。
我々はまだデータベースの異なるコンフィギュレーションファイルを生成する必要があるしかし、フロントコントローラなど
だから我々は、異なる環境の設定を定義するbuild.propertiesとフォルダを持つことになった(と異なるクライアントのためにも、私たちの場合私たちは製品を出荷します)。このフォルダは、svn externalsを使用してファイル構造にリンクされています(再度は必要ありません)。
Phing build.xmlファイルは、コマンドラインでパラメータとしてプロパティファイルを受け取り、そこから値を取得し、必要な設定ファイル、コントローラ、およびその他の環境固有のファイルを生成します。 設定をテンプレートファイルに保存し、Phingのコピー/フィルタ機能を使用してテンプレートのプレースホルダを特定の値に置き換えます。
そして、このようなもののような単純なことができ、与えられた環境を設定するタスク全体:
phing configure-environment -DpropertyFile=./build_properties/build.properties.prod
ビルドファイルにプロパティファイルを指定しpropertyFile
プロパティが定義されているかどうかをチェックして、ファイルをロードします<property file="./build_properties/build.properties.prod" override="true" />
を使用してください。それから、必要なだけの値で魔法を実行します。
あなたのsvn checkout/updateを使用して、結果として得られるすべての設定ファイルをsvn ignoreに入れることができます(これらはphingで生成されます)。私たちは実際にPhingの追加ステップを使用します。これらの手順は、Linuxシェルインストール自己展開パッケージを生成します。これはJenkinsで自動的に生成されます。その後、クライアントにパッケージを送信するか、サポートチームがJenkinsからパッケージを取得し、実行するだけで(プロダクションサーバーへの手動展開を好む)、またはJenkinsが自動的に展開することができます(たとえば、サーバー)。
必要に応じてさらに詳しい情報を記入していただきます。
cool。私たちはCodeIgniterを使い、configのテンプレートを使って同様の設定をし、プッシングを行うときにPhingを使ってそれらのテンプレートに対してコピー/フィルタを実行します。 ジェンキンスはリモートサーバーにプッシュできるのですか? phpUnderControlについてどう思いますか?これらのツールは、MVCフレームワークのPHP(特にユニットテストの部分)でうまく動作しますか? –
まあ、私はあなたがここを押すことによって正確に何を意味するのかよく分かりません。私はsvnを使って "プッシュ"する方法を考えることができません。おそらくポスト・コミット・フックを使用します。 GITはこれにはより良いかもしれません。さもなければ、PhingはSVNが行うことができる(または少ない)ことしかできません。別のオプションはrsyncかもしれません。 Jenkinsに関しては、仕事に他のツールを使用するので、必要な作業を行うためにあなたのphingターゲットを実行します。私はphpUnderControlを試していないが、コンセプトがJenkinsと似ていることを知っているからだ。 – poisson
新しいコードでprodサーバにscp/sshを実行するとどうなりますか? –