web-dev-qa-db-ja.com

ASP.NETアプリケーションの展開を自動化するJenkins

Jenkinsを使用してASP.NET Webアプリケーションの展開を自動化または半自動化する可能性はありますか?制御されていないユーザーがユーザーIDとパスワードを入力する必要があるため、制御された環境または制御されていない環境下にある可能性があります。ファイルをターゲットから宛先にコピーし、WebファームシナリオでSQLスクリプトを実行する方法を探しています。

編集現在、アプリケーションをデプロイするために、xcopy/configure app pool/sql cmdなどにbatファイルを使用しています。しかし、これを機能させるには、プロダクションサポートチームがソースコードをダウンロードし、プロジェクトをビルドして、バットファイルを実行してアプリケーションをデプロイする必要があります。

ここで、ユーザーがソースコードをダウンロードせずに展開を自動化したいと思います。エンドユーザーは、URLにアクセスしてユーザーIDとパスワードのパラメーターを入力し、svnタグを選択するだけで、展開できます。ただし、Jenkinsは匿名ログインで実行されているため、スクリプトを実行する権限がないため、既存のbatファイルは機能しません。

ですから、このような状況に代わるものがあるかどうかを知りたいと思います。入力されたユーザーIDとパスワードを使用してユーザーコンテキストを偽装すると、既存のバッチファイルをそれ以上変更せずに実行できるようになります。それが不可能な場合は、他のアイデアも検討したいと思いますが、人形などの自動化ツールを選択する柔軟性がないため、これらのバッチファイルを使用する必要があります。

13
Sunny

私たちが使用してきたもの、そしてこれから計画していることを共有します。多分それはあなたにより良いアイデアを与えるのに役立つでしょう。

  • 現在、JenkinsとGithubを一緒に使用しています。マスターにマージされると、GithubはJenkinsに通知し、ビルドを開始します。
  • JenkinsでNantスクリプトを使用してプロジェクトをビルドし、ユニットテストを実行します。すべてが問題なければ、別のJenkinsプロジェクトを開始します。 Nantスクリプトは、完全にコンパイルされたコード/最小化されたCSS/JSなどのディレクトリも吐き出します。
  • セカンダリJenkinsプロジェクトはビルドから出力を取得し、別のリポジトリーのGithubに送り返します。
  • .BATファイルは、ステージングWebサーバー上で5分ごとに実行され、基本的にはそのリポジトリの更新をチェックします。更新が見つかった場合は、最新のビルドをダウンロードし、ステージングファイルをバックアップしてから、最新のビルドをステージングフォルダーに展開します。
  • ライブに移行するには、ライブファイルのバックアップとライブファイルへのリポジトリファイルのコピーを処理する.BATファイルがあります。手動で実行されます。 SQLの更新は処理しません(手動で更新します)。

さて、これは完全に理想的ではありませんが、私たちにとってはうまくいきます。これを将来的に拡大していきます:

  • Web Deploy を使用してファイルをJenkinsからIISに直接プッシュし、実行する必要がある他のコマンドを実行します。
  • 自動移行(Entity Frameworkの機能)を使用して、稼働中の一部としてすべてのSQL更新を処理します。
11
Nicholas

.NetアプリとTFSにはすでにJenkinsを使用しています。

  1. プロジェクトに必要な構成を追加し、コードを変換してチェックインします。
  2. TFSから最新のものを入手する(TFSプラグインを使用)
  3. プロジェクトをビルドします(MSBuildプラグインを使用)。コマンドライン引数を使用してMsbuildからコードを公開できます。
  4. Msdeploy.exeコマンド(「C:\ Program Files(x86)\ IIS\Microsoft Web Deploy V2\msdeploy.exe」にあります)を使用して、発行場所から宛先にコードを同期します。
  5. メールを送信し、Jenkinsを介してバックアップを行うこともできます。

MSTest.exeを使用して単体テストを実行し、jenkinコンソールで表示したり、テスト結果を公開したりすることもできます。

4
Sanjeev Kumar