私は主に ASP.NET アプリを Linux サーバーに展開しています。これが私の標準的なワークフローです:
- ソース コード リポジトリを使用しています (Subversion など)
- サーバーには、次のことを行う bash スクリプトがあります。
- 最新のコードをチェックアウトします
- ビルドを行います (DLL を作成します)
- ファイルを必要なものに絞り込みます (たとえば、コード ファイルを削除します)。
- データベースをバックアップします
- 現在の日付で名前が付けられたディレクトリ内の Web サーバーにファイルをデプロイします。
- 新しいスキーマがデプロイメントに含まれている場合、データベースを更新します
- 新しいインストールをデフォルトのものにして、次のヒットで提供されるようにします
チェックアウトは Subversion のコマンドライン バージョンで行われ、ビルドは xbuild で行われます (Mono プロジェクトの msbuild と同様)。ほとんどのマジックは ReleaseIt で行われます。
私の開発サーバーでは基本的に継続的な統合を行っていますが、本番側では実際にサーバーに SSH で接続し、スクリプトを実行して手動でデプロイを開始しています。私のスクリプトは巧妙に 'deploy' と呼ばれているので、それを bash プロンプトで入力します。私はとてもクリエイティブです。いいえ。
実稼働環境では、「デプロイ」と 2 回入力する必要があります。1 回目はチェックアウト、ビルド、および日付付きディレクトリへのデプロイで、もう 1 回はそのディレクトリをデフォルト インスタンスにします。ディレクトリは日付が付けられているため、関連するディレクトリ内から「デプロイ」と入力するだけで、以前のデプロイに戻すことができます。
最初の展開には数分かかり、以前のバージョンへの復帰には数秒かかります。
これは私にとって優れたソリューションであり、3 つのコマンドライン ユーティリティ (svn、xbuild、および releaseit)、DB クライアント、SSH、および Bash のみに依存しています。
いつか CodePlex で ReleaseIt のコピーを更新する必要があります。
http://releaseit.codeplex.com/