30

ビルド/デプロイを自動化する方法が非常に多いため、人々が Web 上のチュートリアルでサポートしているさまざまなシナリオをすべて解析することが難しくなっているようです。それで、私はスタックオーバーフローの群集に質問を提示したかったのです...次の構成を使用して自動化されたビルドおよび展開システムをセットアップする最良の方法は何でしょうか:

  • ビジュアル スタジオ 2008
  • Web アプリケーション プロジェクト
  • CruiseControl.NET

私が最初に試したことの 1 つは、CCnet が自動的に出力を圧縮してサーバーにコピーするようにすることでしたが、それでは宛先で手動で解凍する必要がありました。ただし、すべてのファイルを個別にコピーしようとすると、大規模なアプリケーションの場合は時間がかかる可能性があります (ビルド サーバーはオフィスのデータセンターの外にあります... 私は知っています)。

また、dev、qa、uat、そしてもちろん prod があるため、複数の環境をどのようにサポートするかについても特に興味深いです。

MSDeployは非常に興味深いようですが、文献を間違って解釈していない限り、ビルド サーバーの出力から展開するシナリオでは役に立ちません。どちらかといえば、ビルド ファーム全体に 1 つのビルドをデプロイするのに役立つように思えますが、ある環境から別の環境にデプロイする場合でも、構成設定や Web サービス URL などを手動で変更する必要があります。

4

7 に答える 7

15

私は最近、会社での展開の自動化に数日費やしました。

CruiseControl、NAnt、MSBuildを組み合わせて使用​​して、アプリのリリースバージョンを生成します。次に、別のスクリプトがMSDeployとXCopyを使用して、ライブサイトをバックアップし、新しいファイルを転送します。

私たちのソリューションは、この質問への回答で簡単に説明されています。Webアプリケーションの展開を自動化しますか?

于 2008-09-12T15:29:35.657 に答える
6

MSDeployに興味があるかもしれません。これに関する Scott Hanselmanの投稿を次に示します。現時点 (2008 年 9 月) ではテクニカル プレビューとしてのみ利用できますが、要件に照らして評価する価値があります。

于 2008-09-11T22:38:31.560 に答える
3

NUBuildと呼ばれる別の新しいビルドツール(非常にインテリジェントなラッパー)があります。軽量でオープンソースであり、セットアップが非常に簡単で、ほとんど手間をかけずにメンテナンスできます。私はこの新しいツールが本当に好きで、プロジェクトの継続的ビルドと統合プロセスの標準ツールにしました(75人の開発者に約400のプロジェクトがあります)。やってみよう。

http://nubuild.codeplex.com/

  • 使いやすいコマンドラインインターフェイス
  • すべての.NetFrameworkバージョン、つまり1.1、2.0、3.0、および3.5をターゲットにする機能
  • XMLベースの構成をサポート
  • プロジェクトとファイルの両方の参照をサポート
  • 特定のプロジェクトの「完全な順序付きビルドリスト」を自動的に生成します–タッチメンテナンスは不要です。
  • 循環依存関係を検出して表示する機能
  • 並列ビルドの実行-生成されたビルドリスト内のどのプロジェクトを個別にビルドできるかを自動的に決定します。
  • プロキシアセンブリを処理する機能
  • 「完了率」、「現在のステータス」などを表示するなど、ビルドプロセスの視覚的な手がかりを提供します。
  • XML形式とテキスト形式の両方で詳細な実行ログを生成します
  • Cruise-Control.Net継続的インテグレーションシステムと簡単に統合
  • 2.0以降のバージョンを対象とする場合、XMLLoggerなどのカスタムロガーを使用できます
  • エラーログを解析する機能
  • ビルドされたアセンブリをユーザー指定の場所に展開する機能
  • ソースコードをソース管理システムと同期する機能
  • バージョン管理機能
于 2009-08-23T04:41:46.963 に答える
2

コマンドをリモートで実行する機能はありますか?SystinternalsPsExecユーティリティを使用すると、リモートマシンでコマンドライン解凍プログラムを実行できます。ビルドを.zipファイルとしてリモートサイトにコピーするスクリプトがある場合は、PsExec呼び出しでファイルを解凍するためにもう1行必要です。

于 2008-09-12T15:27:04.507 に答える
1

自動ビルドからデプロイ可能なファイルのセットを取得することについて、関連する質問がありました。Web配置プロジェクト(リンクと古い質問のすべて)が必要なことを実行していることがわかりました。これらはVSとMSBuildのアドオンです。

于 2008-09-12T15:23:13.940 に答える
1

これは、ASP.NET だけでなく、すべての開発に共通の問題です (もっと早く読んでおけばよかったと思います)。開発者の 1 人である私のチームは当然、リリース プロセス全体でBuildMasterを社内で使用しており、ほとんどのシナリオでは無料です。ツール内で、すべての標準 CI ビルドを実行して成果物を作成し、特定のアプリケーションまたは環境に応じて、内部または外部でホストされている 40 以上のサーバーのいずれかにこれらの成果物をデプロイする自動化プロセスをセットアップできます。 .

さまざまなテスト環境への展開について具体的に言及されたので、これはツールの基本的な側面です。アイデアは、既に配置されている環境ワークフロー (例: 統合 -> QA -> 生産) をモデル化し、本質的にソース管理から生産までビルドを促進することです。ほとんどの場合、アーティファクトを環境に展開する展開アクションを追加するだけで簡単ですが、それよりもはるかに複雑になる場合もあります。

また、構成ファイルの変更は、BuildMaster の別の組み込みコンポーネントである展開の一部であるとさりげなく言及しました。私たちが考えていたのは、ツール自体をすべての構成ファイルと展開の中心的なハブとして使用することでした。これにより、展開計画の単純な「構成ファイルの展開」アクションで最新の変更が自動的に適用されます。

このプロセスに関してあなたが言及しなかったことの 1 つは、データベースの展開の側面です。ほとんどの ASP.NET アプリケーションは関連付けられたデータベースを必要とします。それ以外の場合は、静的な HTML ファイルである可能性があります。展開ごとにデータベース スキーマを適切なデータベース バージョンに更新することが重要です。驚くことではありませんが、これを処理する BuildMaster 内のモジュールもあります。ツール自体に DDL-DML スクリプトを保存し、スクリプトを1 回だけ実行するという考え方です。環境ごとに、ビルドがそれらを介してデプロイされるときに、各環境のすべてのデータベースが最新であることを保証します。その他のスクリプト (ストアド プロシージャ、ビュー、トリガーなど) は基本的にコード ファイルであるため、ソース管理に属します。これらの DROP-CREATE-CONFIGURE タイプのスクリプトは、ほとんどの場合、単純な展開アクションで毎回実行できます。

ほとんどの開発者が考えていない配置パズルのもう 1 つのピースは、プロセスの自動化です。多くの開発者は、これらのプロセスを手動で実行するために、サインオフを実行したり、変更要求フォームに記入したりする必要があります。繰り返しますが、これはすべて BuildMaster 内の自動化されたワークフロー セットアップの一部として利用できます。すべての単体テストに合格しない限り QA 環境への昇格を許可しないブロッカーをセットアップするか、QA チームの誰かがビルドを承認し、問題追跡ツールのすべての問題が解決/クローズされない限り、ステージング環境への昇格をブロックすることができます。その特定のリリース。

答えから CC.NET を省略したことに気づきましたが、私たちのアプリケーションはすべて BuildMaster を介してビルドおよび展開されているため、不要になりましたが、ドロップ場所からアーティファクトを簡単にピックアップして、後の環境に展開することもできます.

于 2013-05-22T16:35:06.210 に答える