質問

私のチームは現在、.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 の使用は避けたいと考えています。

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

役に立ちましたか?

解決

皆様、親切なご提案をありがとうございました。私たちはそれらをすべて確認しましたが、慎重に検討した結果、CruiseControl、NAnt、MSBuild、M​​SDeploy を組み合わせて独自のものを導入することにしました。

この記事には素晴らしい情報が含まれています。MSBuild と CruiseControl.NET の統合

私たちのソリューションがどのように機能するかを大まかに示します。

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

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

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

この段階まではまだうまくいきませんでしたが、今ではほとんど魅力的に動作しています:D

現在 SA に同様の質問がいくつかあるようですので、プロセスに変更を加えるたびにこの回答を更新し続けるつもりです。

他のヒント

利用した ビジュアルビルドプロ 長年にわたって、非常に滑らかで使いやすく、多くの標準操作(あなたが言及したものなど)が組み込まれています。

私が使う 傀儡, 、RPM を構築するための Makefile と 私のためにこれをするために。私のシステムは直接適用されませんし、Windows の世界にはあまり詳しくありませんが、移行可能なパターンがいくつかあります。

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

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

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

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

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

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

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

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

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

... > E:\archive\msdeploy.log

誰もファイナルビルダーについて言及しなかった http://www.finalbuilder.com. 。Visual build Pro と同等です。自動ビルド展開ハーネスを作成するための優れた GUI

ファブリック. 。小さく、シンプルで、手続き的に見えます。Ruby は使用できないため、Python で書かれています (なぜですか?)。

Setup Factory (indigo Rose より) を確認してください。できることに関してはかなり強力です。Windows インストーラー API を使用します。おそらく必要なことはできるでしょう。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top