40

私のチームは現在、.Net および PHP Web アプリケーションの展開を自動化しようとしています。展開を合理化し、手動で行うことによる煩わしさと多くの頭痛の種を回避したいと考えています。

次のことを可能にするソリューションが必要です。

- Compile the application  
  - Version the application with the SVN version number
  - Backup the existing site
  - Deploy to a web farm

すべてのアプリは SVN を使用してソース管理されており、.Net アプリは CruiseControl を使用しています。MSBuild および NAnt デプロイメント スクリプトの使用を試みてきましたが、成功は限られています。過去に Capistrano も使用しましたが、可能であれば Ruby の使用は避けたいと考えています。

他に役立つ展開ツールはありますか?

4

9 に答える 9

33

皆様の親切な提案に感謝します。私たちはそれらをすべてチェックしましたが、慎重に検討した結果、CruiseControl、NAnt、MSBuild、および MSDeploy を組み合わせて独自のものを展開することにしました。

この記事には、いくつかの優れた情報があります: MSBuild と CruiseControl.NET の統合

私たちのソリューションがどのように機能するかはおおまかに次のとおりです。

  • 開発者は、アプリの「デバッグ」バージョンをビルドし、単体テストを実行してから、SVN にチェックインします。
  • CruiseControl は更新を確認し、ビルド スクリプトを呼び出します...
    • ビルド データベースで新しい移行を実行します。
    • 構成ファイルをビルドサーバーの構成に置き換えます
    • アプリの「デバッグ」構成を構築します
    • すべての単体テストと統合テストを実行します
    • アプリの「デプロイ」構成を構築します
      • 現在のメジャー/マイナー バージョンと SVN リビジョン (例: 1.2.0.423) で DLL をバージョン付けします。
      • この新しいビルドをビルド サーバーの「リリース」フォルダーに移動します
      • 不要なファイルを削除します
    • 必要に応じてビルド サーバーの IIS を更新します。

次に、すべてがライブ/ステージングに移行する準備ができていることを確認したら、次の目的で別のスクリプトを実行します。

  • ライブ/ステージング サーバーで移行を実行する
  • MSDeploy: 現在のライブ/ステージング サイトをアーカイブする
  • MSDeploy: ビルドからライブ/ステージングへのサイトの同期

この段階まではかなり進んでいませんでしたが、今ではほとんどが魔法のように機能しています:D

現在、SA には同様の質問がいくつかあるようです。

于 2008-09-11T09:17:22.203 に答える
3

私はPuppet、Makefilesを使用してRPMを構築し、Bambooを使用してこれを実行します。私のシステムは直接適用されず、Windowsの世界に精通していませんが、いくつかの転送可能なパターンがあります。

makeの設定により、アプリを構成するすべてのもの(php libs、php Webサイト、perlモジュール、Cアプリなど)のRPMを作成できます。これは、手動で呼び出すことも、Bambooを介して呼び出すこともできます。これらのRPMをyumリポジトリとpuppetハンドルに転送し、最新の(または正しい)バージョンのソフトウェアがクラスターにインストールされていることを確認します。

ソフトウェアパッケージのMSIへの構築を自動化できますか?PuppetはWindowsでのソフトウェアパッケージとバージョンのインストールを管理できると思います。

于 2008-09-05T15:09:51.377 に答える
3

私は何年もVisual Build Proを使用してきましたが、非常に洗練されていて使いやすく、多くの標準操作 (あなたが言及したものなど) が組み込まれています。

于 2008-09-05T13:50:45.950 に答える
2

これには msdeploy を使用します。それは完璧に機能します。

アリについて; .NET プラットフォームには NAnt があり、MSDeploy と組み合わせて使用​​できます。Nant スクリプトから MSDeploy を呼び出す可能性があります。

編集済み:物事を明確にするためだけに。msdeploy ですべてを行うことができます。Nant の使用は必須ではありません。

于 2010-06-27T00:22:19.930 に答える
1

xcopy を使用する代わりに、-source:dirpath コマンドを使用して、msdeploy を使用してサーバーへの UNC アドレスを指定することができました。重要なのは、ignoreAcls=true であり、msdeploy 文字列内のユーザー名とパスワードへの呼び出しを削除します。

msdeploy -verb:sync -source:dirpath=\\build\e$\app -dest:dirpath=\\live\d$\app,ignoreAcls=true

この例では、サイトをビルド サーバーの E ドライブからライブ サーバーの D ドライブにデプロイします。ライブ サーバーで共有またはこのレベルのディスク アクセスを公開する場合は、セキュリティに関する考慮事項がいくつかあります。現在、アクセスが制限された共有フォルダーの使用を検討しています。

次に、この出力をログ ファイルにパイプします。ログ ファイルは、参照用にバックアップ アーカイブに移動されます。ログ ファイルには、どのファイルがいつ移動されたかが記録されます。出力パイプ コマンドを使用して上記の例を続けます。

... > E:\archive\msdeploy.log
于 2008-09-16T09:13:20.533 に答える
1

Final Builder http://www.finalbuilder.comについては誰も言及していません。Visual build Pro と同等です。自動ビルド展開ハーネスを作成するための優れた GUI

于 2010-09-07T18:49:38.123 に答える
0

ファブリック。小さく、シンプルで、手続き型のようです。Python で書かれているのは、Ruby がダメだからです (なぜ?)。

于 2008-09-05T13:23:30.620 に答える
0

Setup Factory (indigo rose から) をご覧ください。それができることはかなり堅牢です。Windows インストーラー API を使用します。それはおそらくあなたが必要とすることをすることができます。

于 2008-09-05T13:26:42.640 に答える
0

Nant が存在する唯一の理由は、.NET 言語セットを使用してタスクを記述できる Ant に似たフレームワークを使用できるようにするためです。純粋な .NET 開発者にカスタム タスクを作成させたくない場合は、Ant を使用できない理由がわかりません。アプリケーションを .NET 言語で作成したからといって、.NET ビルド ツールを使用する必要があるわけではありません。

于 2010-06-27T00:41:30.390 に答える