方法 #1
時間があれば、CruiseControl.NETを使用することをお勧めします。少なくともしばらくの間、stackoverflow チームはこれをデプロイに使用していました。
方法 2
コピー戦略に関しては、アプリケーションとメディアに 7zip と ftp を組み合わせて使用することをお勧めします。7Zip は、ファイルの種類 (web.config)、フォルダー、およびファイルの種類を除外でき、さまざまなファイルを異なる方法で圧縮できるため、優れています。たとえば、PNG を圧縮しても意味がありません。これは毎回完全な展開を行うことに注意してください。したがって、大きなメディア フォルダーがある場合は、個別に処理します。
データベースに関しては、Redgate の SQL Compare を使用することをお勧めします。それらは商用アプリケーションですが、非常に優れています。それらは、stackoverflow ポッドキャストで何度も積極的に言及されています。
- マスター 7zip ファイルを生成する開発/ビルド サーバーで CMD ファイルをビルドし、それをステージング (または運用) サーバーの専用フォルダーに FTP します。バッチごとに異なる圧縮方法を使用して、ファイルを単一の 7zip ファイルにフィードする 7zip を複数回呼び出すことになります。
- ステージング サーバーまたは運用サーバーごとに CMD ファイルを作成します。このファイルは、適切なファイル バックアップを実行し、7zip ファイルを適切な場所に抽出します。
ステージングへの展開は次のようになります。
- ステージング サーバーの専用 FTP フォルダーへの FTP アップロードをトリガーする 7zip-prep コマンド ファイルを実行します。
- SQL Compare によって生成されたスクリプトを使用して、ステージング データベース サーバーに対して DB の変更を実行します。
- ステージング サーバーで 7zip 解凍コマンド ファイルを実行します。
これは私が使用する方法です。私はまだ CruiseControl.NET をマスターするために時間を費やしていませんが、マスターするときは、少なくとも大規模なアプリケーションの場合は代わりにそれを使用するでしょう。ワンクリックで展開できるわけではありませんが、1 日に複数回の効率的な展開が可能です (私はここ数年断続的に行っています)。7zip の方法は便利です。コマンド ファイルを取得したら、それらをコピーして新しいプロジェクトにすぐに使用できるからです。