TFSを使用して継続的デリバリーを実現することは可能ですか? Windowsサービス? WEBプロジェクトでTFSを使用してmsdeployを使用する方法に関する投稿は1000件を超えています。
ブログ、記事、msdn、TFSを使用したWindowsサービスの継続的デリバリーのベストプラクティスなどのリソースがない理由を理解しようとしています。
実用的な参考資料がなければ、次のことを達成できるかどうかはわかりません。これはとてもイライラします。
Integration Server以外のWebプロジェクトについても、Serviceのリモートサーバーに既存のコードベースをアーカイブしてください。
IntegrationServerではなくリモートサーバーでサービスを停止する方法
リモートサーバーに新しいコードベースをコピーする
サービスの開始
Msdeployは、自分自身に対して行う最悪のことです。 IISのバージョンと構成を正しく機能させるのは非常に困難です。コードを圧縮するには、7-Zip、コピーにはxcopyなどを使用します。もちろんpowershellをボックスからリモートに移動します。その後、powershellコマンドを使用してIISを管理できます。学習を気にしない場合は albacore のような代替手段を試すこともできますRuby(私の意見では、Rubyは、PowerShellよりもはるかに優れており、オブジェクト指向です)
継続的デリバリーとデプロイにはギャップがあるようです。しかし、本当に強力でギャップを埋めることができるツールがいくつかあります。
私はしばらく前に同じ問題を抱えていましたが、私の命を救う素晴らしいツールを見つけました。会社の全員が、すべての顧客にソリューションを手動で展開する必要がありました。このツールは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で働いていませんが、それは素晴らしいツールだと思います! ;)
Msdeployを完全に無視することにしました。主にあなたが言及したのと同じ理由で。ドキュメントが不足していて、誰もそれを使用していないようです(成功しました)。
私の印象では、それはそれほど難しくないものを作るだけだということです。
私は単純なxcopyデプロイ方法に固執します。 IISのようなほとんどのサービスには、優れた管理インターフェイスがあります。私はそれらに対してスクリプトを作成するだけです。