2009-08-31 6 views
9

私はASP.NET MVC Webサイトを開発していますし、まったくデプロイメント戦略を立てていないので、特にデータベーススキームには多くのステップと時間が必要です。デプロイメント戦略を策定するのを助けてください

ここに私がやりたいと思っているステップがあり、ツールやツール(できれば無料)の実行方法に関する提案があります。不足しているステップや、間違っていることを指摘してください。

編集:私は、私は、各ステージ

  1. を解決するために使用したツールの一覧が表示されます
  2. (PERFORCE)ビルド、デバッグおよびreleseバージョンをソース管理からすべてのコードをチェックしてください。リリースバージョンにはweb.configの接続文字列が異なる必要があります。 (MSBUILD)
  3. すべての単体テストを実行する
  4. 各ページ(aspx)には、参照されているすべてのJSファイルとインラインコードを1つのファイルにまとめます。 CSSと同じ
  5. JSとCSSのファイルをMinifyしました。
  6. サーバー
  7. が新しく追加されたり、サーバーに変更されたすべてのファイルをアップロード生きて
  8. デプロイ、データベースのスキーマの変更データベースのスキーマとデータのライブバックアップ。
  9. すべてのコードと私のソース管理預託所を外部ドライブに、場合によってはオンラインにバックアップします。

私のサイトには午前1時から午後4時の間に訪問者がいないので、これはステージングサーバーなどを必要とせずに行うことができます。

私の質問は長いですが、これはおそらく多くの人々を助けるでしょう。

答えて

2

MSBuild(またはその他のビルド技術)は、これらのタスクをすべて自動的に達成するための最良の方法でしょう。

MSBuildを使用して問題なく1-4を実行できます。私達はupdate our web configs with MSBuild using an XMLUpdate taskを使って生成されたコードの一部を補うためにいくつかのawkスクリプトを実行します。

#5と#6では、バックアップファイルを取得して本番インスタンスに対して実行するスクリプトを実行するためにExecを使用したいと思うかもしれませんが、私はSQL管理者ではありません。それが最良の方法である場合、またはこれのためのMSBuildタスクが既に存在する場合。

実際のファイルコピーには、Copyタスクなどがありますが、xcopyやカスタムスクリプトを使用する必要があります。

製品のビルドを管理することは大きな仕事ですが、MSBuildやAntなどのテクノロジが作成されたのはその正確な理由です。

0

私はロジックを処理するためにNAntのを使用して、本番サーバー上で展開するために次のことを試してみました:

1)リビジョン番号の最新のリリースビルドでフォルダを確認してください。

は新しいリビジョンが利用可能な場合:

2)コンパイルされたWebサイトやデータベーススクリプト(下記参照)を使用してファイルを取得します。

3)Webサイトをオフラインにしてください(app_offline.htmを追加してください)。

4)データベーススクリプトを適用します(下記参照)。

5)ウェブサイトをオンラインにしてください(app_offline.htmを削除してください)。


データベーススキーマの変更を展開する場合、私はsome posts by K. Scott Allenに触発されています。

1)データベーススキーマ(テーブル、インデックス、シードデータ)に対する新しい変更をそれぞれスクリプト化し、新しい変更を別々のファイル(例えば、schema-001.0001.sqlschema-001.0002.sqlなど)に保存します。これらのファイルは別のフォルダに保存してください。 sql\schema

2)スクリプトその他。オブジェクト(ストアドプロシージャ、ファンクション、トリガ、およびビュー)は別々のフォルダにある別々のファイルに格納されます。 sql\procedures\uspGetProducts.sqlsql\procedures\uspUpdateProduct.sqlsql\functions\sql\triggers\sql\views\

3)を展開する:a)すべてのmiscを削除します。パート2のオブジェクト、b)前に適用されていないパート1のスキーマ変更を適用する、c)最後にすべてのその他のアイテムを再作成する。これらのスクリプトは、例えば、パート2から自動的に展開することができる。運用サーバー上のNantスクリプト

関連する問題