2010-12-19 10 views
1

複数のColdfusionサイトをホストするためのステージングサーバーと運用サーバーを実行するための良い方法を試しています。各サイトは本質的にはリポジトリのフォークで、それぞれのサイト固有の変更が加えられています。私はこのステージングサーバーがQA承認時に運用サーバーにコードを移動させる良い方法を探しています。Coldfusionコードのステージングからプロダクションに移行する理想的な方法はありますか?

サイトをEARファイルにコンパイルしてプロダクションサーバー上で実行することには関心がありましたが、Coldfusionアーカイブを頭に入れていないようですが、これを自動化する方法は特にありません。 。

これまで私が成功したことは、サイト用のSubversionを使用することです。サイトがQAされるとコードがコミットされ、運用サーバーの作業ディレクトリにはSVNの更新が実行されます作業ディレクトリから実際のライブコードへコードコピーをトリガーします。これは正常に動作しましたが、多くの動いている部分があり、依然としてコミットと更新を実行するために各サーバーへのサーバーアクセスが必要でした。これは個別のサイトでも機能しましたが、複数のサイトでこのアーキテクチャをセットアップして維持するのは悪夢といえます。

理想的には、QAのサイトをマークしてQA担当者にサイトをチェックさせ、安定した/プロダクションとして価値のあるマークを付けるために、コントロールパネルにログインする機能を備えたFTPアクセスを、サイトが保留中であることを誰かに見て、更新されたサイトを展開するためのボタンをクリックします。 (これらの役割のいずれかが同じ人の心で満たされている可能性があります)

残念ながら私の現在の思考過程を理解するためのフレームワークではありません。

答えて

2

@Nathan Strutzと合意すると、Antはこの目的のための良いツールです。いくつかの考え。

デルタの機会を最小限に抑える再現可能なビルドプロセスが必要です。それを念頭に置いて:

  1. SVNエクスポートビルド。
  2. ビルドにSVNでタグを付けます。
  3. エクスポートを.zip形式にするか、インストーラーなどを使って何かを実行するというアイディアは、一連の繰り返し可能なデプロイメント・ステップで検証する1つの単位です。
  4. QAにビルドを送信します。
  5. QAではなく、単に変更されたファイルよりも、ビルドとして生産に

移動全体のコードベースの上に構築、展開を承認した場合。プロダクションで何が行われているかを知るこの方法は、検証されたのと同じことです。新しいビルドによって構成データが上書きされないように、コードをリファクタリングします。

実際の運用環境では、複数のサーバーを解決するためのツールを見つけることができませんでした。だから私は自分自身を圧倒していると思う。

あなたの状況では、あなたが記述しているカスタマイズを可能にするメカニズム(API)を使用して、標準化されたコードベースを使用できるアプローチを考えています。それ以外の場合は、各サイトを「カスタム」プロジェクトとして管理することは非常に苦労します。

更新

学習アリAnt in Action [書籍]。

ソースコントロール:あなたが記述した状況では、私はコアコードベースとサイトごとのオーバーレイを維持します。コアをエクスポートし、サイト固有のものにします。これにより、サイト固有の変更が上書きしないコア更新が確実に行われます。

この組み合わせを「ビルド」と呼んでください。 Antはビルドを行います。コアごとにAntスクリプト(おそらくより柔軟なant構成ファイル)を維持する&サイトの組み合わせ。特定のビルドの一部としてコアとサイトのバージョン番号を追跡します。

ソフトウェアが、ビルドの一部であるインストーラ(例:Nullsoft Install Shield)の中に詰め込まれている場合。それ以外の場合は、.zipファイルを生成する必要があります(.earも可能ですが、実際にCFでこれを行う人はいません)。ポイントはビルド全体を含む1つのファイルです。

このビルドファイルは、QAが検証するものです。検証には、展開、構成、機能テストが含まれます。これがどのように流れるかについては、私の答えを見てください。

展開:あなたが展開QAを自動化したい場合は

それを検証するためにも関与すべきです。 QAの意味は、本番環境への移行を開始する前に、サーバーで同じプロセスを使用してビルドを展開/インストールすることです。

これを行うには、どのようなサーバーがどのビルドファイルを受信するのか、それを実現するために必要な資格情報と接続情報を追跡するものを作成します。ほとんどの場合、FTP経由です。一旦転送されると、ツールはビルドファイルを抽出し、インストーラを実行する。この最後の部分は、リモートから抽出やインストールなどのコマンドを1台のサーバーで実行できるようにする方法について研究する必要のある領域です。

+0

システムは標準化されたコードベースを持つように設定されていますが、残念なことに私たちの製品の唯一のホストではないためサイトごとに分離する必要もあり、共有ホスティングソリューションも必要です。現在、Gitをソース管理に使用しています。各サイトはリポジトリのブランチですが、これは問題になります。これは、各サイトのQA準備完了/安定コミット用に別のタグが必要なためです。*ステージングからプロダクションまでのファイルの転送を自動化する最善の方法は何だろうと思いますか? –

+0

@タイラーClendenin:私の更新を参照してください。 – orangepips

+0

ありがとう、非常に参考になりました。 –

2

Antを移行ツールとして検討する必要があります。ビルドプロセスは、コマンドラインやEclipse内で実行できる単純なXMLファイルでパッケージ化することができます。自動化されたビルドプロセスを作成することは、プロセスを文書化し、毎回同じ方法で実行するため、優れています。

Antは、必要に応じてバックアップを作成したり、必要に応じてバックアップを作成したり、FTP経由で転送したり、javascriptを圧縮したり、アプリケーションメモリやサーバをフラッシュしたりキャッシュがインストールされるとキャッシュします。あなたはAntでできることに驚くかもしれません。

開始するには、the Ant manualを主なリソースとしてお勧めしますが、既存のAntビルドを検討してください。私はone on RIAForgeを持っています。例えば、面白いことをして、ビルド中に私のファイルに対して何らかの処理をするためのすっきりしたスクリプトを呼び出します。ファイルがsearch riaforge for build.xmlの場合は、さまざまなものが用意されています。その多くはColdFusionプロジェクトのためのものです。

+0

+1繰り返し可能なビルドプロセス。 – orangepips

+0

私はアリに目を向けています。学習のための推奨リンクはありますか? –

関連する問題