web-dev-qa-db-ja.com

継続的デリバリーTFS

TFSを使用して継続的デリバリーを実現することは可能ですか? Windowsサービス? WEBプロジェクトでTFSを使用してmsdeployを使用する方法に関する投稿は1000件を超えています。

ブログ、記事、msdn、TFSを使用したWindowsサービスの継続的デリバリーのベストプラクティスなどのリソースがない理由を理解しようとしています。

実用的な参考資料がなければ、次のことを達成できるかどうかはわかりません。これはとてもイライラします。

  1. Integration Server以外のWebプロジェクトについても、Serviceのリモートサーバーに既存のコードベースをアーカイブしてください。

  2. IntegrationServerではなくリモートサーバーでサービスを停止する方法

  3. リモートサーバーに新しいコードベースをコピーする

  4. サービスの開始

2
swapneel

Msdeployは、自分自身に対して行う最悪のことです。 IISのバージョンと構成を正しく機能させるのは非常に困難です。コードを圧縮するには、7-Zip、コピーにはxcopyなどを使用します。もちろんpowershellをボックスからリモートに移動します。その後、powershellコマンドを使用してIISを管理できます。学習を気にしない場合は albacore のような代替手段を試すこともできますRuby(私の意見では、Rubyは、PowerShellよりもはるかに優れており、オブジェクト指向です)

2
uttamkini

継続的デリバリーとデプロイにはギャップがあるようです。しかし、本当に強力でギャップを埋めることができるツールがいくつかあります。

私はしばらく前に同じ問題を抱えていましたが、私の命を救う素晴らしいツールを見つけました。会社の全員が、すべての顧客にソリューションを手動で展開する必要がありました。このツールはOctopusDeployと呼ばれます。

彼らの ウェブサイト で彼らは製品を次のように説明しています:

Octopus Deployは、プロの.NET開発者向けのユーザーフレンドリーなリリース管理システムです。これにより、ASP.NETアプリケーションとWindowsサービスの自動化された頻繁な低リスクのリリースが、開発、テスト、ステージング、および実稼働環境に可能になります。

そして、それは本当に非常にうまくいきます。これが私の会社での設定方法です。Gitリポジトリが3つのブランチに分割されています:dev-pre-pro。

継続的インテグレーションツールとして、Hudsonを使用します。 Hudsonは、3つのブランチのいずれかをコンパイルするたびに、Nugetパッケージを生成します(OctoPack + MSBuildを使用)。

このパッケージは、ドメイン内のOctopusDeploy管理サイトから利用できます。 OctopusDeployは基本的に、nugetパッケージをその「触手」(デプロイするマシンにインストールされているサービス)にプッシュし、PowerShellを使用してカスタムアクションを実行します。

このように、PSスクリプトを使用して、コンパイルしたばかりの新しいソリューションを選択した環境にコピーしたり、コピーの前後にサービスを開始/停止したり、データベースを更新したりすることができます。想像力を働かせてください。

したがって、CIツールでプロジェクトをコンパイルした後(TFSを使用して実行できます)、OctopusDeployの管理サイトにアクセスして、2回クリックするだけで任意の環境(dev-pre-pro)の更新を実行できます。

追伸-私はODで働いていませんが、それは素晴らしいツールだと思います! ;)

1
margabit

Msdeployを完全に無視することにしました。主にあなたが言及したのと同じ理由で。ドキュメントが不足していて、誰もそれを使用していないようです(成功しました)。

私の印象では、それはそれほど難しくないものを作るだけだということです。

私は単純なxcopyデプロイ方法に固執します。 IISのようなほとんどのサービスには、優れた管理インターフェイスがあります。私はそれらに対してスクリプトを作成するだけです。

0
Joppe