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


13

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

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

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

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


あなたの研究を共有することは誰にとっても役立ちます。あなたが何を試みたのか、なぜあなたのニーズに合わなかったのか教えてください。これは、あなたが時間をかけて自分自身を助けようとしていること、明白な答えを繰り返すことから私たちを救うこと、そして何よりも、より具体的で関連性のある答えを得るのに役立つことを示しています。質問方法
-gnat

質問を更新してください。追加情報を提供する必要がある場合はお知らせください。
晴れ

回答:


11

私たちがこれまで使用してきたものと、今後の計画を共有します。おそらく、より良いアイデアを提供するのに役立つでしょう。

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

さて、これは明らかに完全に理想的ではありませんが、私たちのために働いています。今後、これを次のように拡張したいと考えています。

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

私たちがフォローしているものとほぼ同じです。しかし、Web DeployがWindowsサービスなどをインストールでき、複雑なWebアプリケーションに必要なすべてをインストールできるかどうか疑問に思いました。現在、psツールを使用しており、正常に機能しています。DBの場合、DeployDBツールの使用を計画しています。
晴れ

IISがファイルをロックしている状況をどのように処理しますか?誰かがアプリで作業している状況をどのように処理しますか。複数のノードがありますか、または公開時に作業しているユーザーのアプリケーションを中断しますか?
ピョートルペラ

1
@Peri-元の回答で言及するのを忘れていましたが、2つの実稼働サーバーを用意し、必要に応じて(IISまたはnginxを使用して)サーバーを切り替えることを計画しています。これにより、デプロイが発生したときに他のライブサーバーを「ウォームアップ」してから、それに切り替えることができるため、顕著なダウンタイムが発生することはありません。
ニコラス

4

私はすでに.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コンソールで表示するか、テスト結果を公開することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.