7

このドキュメントに従って、Visual Studio Team Services で Service Fabric アプリケーションの CI ビルドを構成しました: https://azure.microsoft.com/en-us/documentation/articles/service-fabric-set-up-continuous -統合

ただし、CI ビルドで公開する代わりに、ビルドとパッケージ化のタスクのみを実行し、pkg フォルダー、スクリプト、公開プロファイル、アプリケーション パラメーターなど、Service Fabric 関連のすべての出力をドロップに含めます。このようにして、新しいリリース パイプライン (エージェント ベースのリリース) に渡して、サービス ファブリック アプリケーションの実際のデプロイを行うことができます。

私のリリース定義には、(適切なサービス プリンシパルが構成された) ARM エンドポイントを使用する単一の Azure Powershell タスクがあります。

アプリを既存の Service Fabric クラスターにデプロイするときは、既定の Deploy-FabricApplication コマンドレットを使用して、pkg フォルダーと、既存のクラスターへの接続で構成された発行プロファイルを渡します。

「クラスター接続インスタンスがヌルです」というエラー メッセージが表示され、解放に失敗します。そして、私はなぜ理解できないのですか?

Debug-FabricApplication コマンドレットは Connect-ServiceFabricCluster コマンドレットを正常に実行しますが、Publish-NewServiceFabricApplication コマンドレットが実行を引き継ぐとすぐに、クラスター接続が失われます。

Service Fabric コマンドレットを使用するとこのシナリオが可能になると思いますが、デプロイ中にクラスター接続を開いたままにしておく方法がわかりません。

更新: ドキュメントへのリンクは Service Fabric PowerShell スクリプトを参照しなくなったため、この質問の前提条件はドキュメント化されなくなりました。この記事では、VSTS のビルド タスクとリリース タスクについて言及しています。これは、私が使用しようとした PowerShell コマンドレットよりも優先される可能性があります。

4

4 に答える 4

31

Connect-ServiceFabricCluster関数が (Deploy-FabricApplication.ps1 から) 呼び出されると、への呼び出しの後にローカル変数$clusterConnectionが設定されConnect-ServiceFabricClusterます。を使用して確認できますGet-Variable

残念ながら、一部の SDK スクリプトには、その変数が設定されることを期待するロジックがありますが、異なるスコープで実行されるため、そのローカル変数は使用できません。

Deploy-FabricApplication.ps1 スクリプトは、変数を現在のスコープに配置するドット ソース表記を使用して呼び出されるため、Visual Studio で機能します。$clusterConnection

リリース パイプラインを介してスクリプトを実行するときにドット ソーシングを使用する方法があるかどうかはわかりませんが、回避策として、呼び出し$clusterConnectionによって設定された直後に変数をグローバルにすることができConnect-ServiceFabricClusterます。スクリプトを編集Deploy-FabricApplication.ps1し、接続ロジックの後に次の行を追加します (~行 169):

$global:clusterConnection = $clusterConnection  

ところで、さまざまな Deploy-FabricApplication.ps1 スクリプトを使用するのではなく、Service Fabric アプリケーションをデプロイするカスタム ビルド/リリース タスクの設定を検討することをお勧めします。

于 2016-03-01T12:28:42.473 に答える