チュートリアル:CI/CD を使用して Service Fabric クラスターへアプリケーションをデプロイする

このチュートリアルはシリーズの第 4 部です。Azure Pipelines を使用して、Azure Service Fabric アプリケーションの継続的インテグレーションと継続的デプロイを設定する方法について説明します。 既存の Service Fabric アプリケーションが必要で、.NET アプリケーション ビルドで作成されたアプリケーションを例として使用します。

シリーズの第 3 部で学習する内容は次のとおりです。

  • プロジェクトにソース管理を追加する
  • Azure Pipelines にビルド パイプラインを作成する
  • Azure Pipelines にリリース パイプラインを作成する
  • アプリケーションを自動的にデプロイおよびアップグレードする

これらのチュートリアルでは、次の方法を説明します。

前提条件

このチュートリアルを開始する前に

投票サンプル アプリケーションをダウンロードする

このシリーズの第 1 部で投票サンプル アプリケーションをビルドしていない場合は、ダウンロードできます。 コマンド ウィンドウで、次のコマンドを実行して、サンプル アプリのリポジトリをローカル コンピューターに複製します。

git clone https://github.com/Azure-Samples/service-fabric-dotnet-quickstart

発行プロファイルの準備

ここまでで、アプリケーションを作成し、アプリケーションを Azure にデプロイしたので、継続的インテグレーションを設定する準備ができています。 まず、Azure Pipelines 内で実行されるデプロイ プロセスで使用する発行プロファイルを、アプリケーション内に準備します。 前に作成したクラスターを対象とするように、発行プロファイルを構成する必要があります。 Visual Studio を起動し、既存の Service Fabric アプリケーション プロジェクトを開きます。 ソリューション エクスプローラーで、プロジェクトを右クリックし、 [発行] を選択します。

継続的インテグレーション ワークフローに使用するアプリケーション プロジェクト内で目標一覧表 (たとえば Cloud) を選択します。 クラスター接続エンドポイントを指定します。 Azure DevOps 内の各デプロイ用にアプリケーションがアップグレードされるよう、 [アプリケーションのアップグレード] チェックボックスをオンにします。 [保存] ハイパーリンクを選んで設定を発行プロファイルに保存してから、[キャンセル] を選んでダイアログ ボックスを閉じます。

プロファイルのプッシュ

新しい Azure DevOps の Git リポジトリで Visual Studio ソリューションを共有する

ビルドを生成できるように、Azure DevOps のプロジェクトで、アプリケーションのソース ファイルを共有します。

Visual Studio 2022 IDE の Git メニューから [Git] -> [Git リポジトリの作成] を選んで、新しい GitHub リポジトリと Azure DevOps リポジトリを作成します

ドロップダウンで自分のアカウントを選び、リポジトリ名を入力して、[作成とプッシュ] ボタンを選択びます。

新しい Git リポジトリの作成のスクリーンショット。

リポジトリを公開すると、ローカル リポジトリと同じ名前で、自分の Azure DevOps Services アカウントに新しいプロジェクトが作成されます。

https://dev.azure.com/\<organizationname> に移動し、プロジェクトの名前をマウスでポイントして、[Repos] アイコンを選び、新しく作成されたリポジトリを確認します。

Azure Pipelines を使用して継続的デリバリーを構成する

Azure Pipelines のビルド パイプラインでは、順次実行される一連のビルド ステップで構成されたワークフローを記述します。 Service Fabric クラスターをデプロイするため、Service Fabric アプリケーション パッケージおよび他のアーティファクトを生成するビルド パイプラインを作成します。 Azure Pipelines のビルド パイプラインの詳細については、こちらをご覧ください。

Azure Pipelines のリリース パイプラインでは、クラスターにアプリケーション パッケージをデプロイするワークフローを記述します。 ビルド パイプラインとリリース パイプラインを併用すると、ソース ファイルから始まり、クラスターでのアプリケーションの実行で終わるワークフロー全体を実行できます。 Azure Pipelines のリリース パイプラインの詳細については、こちらをご覧ください。

ビルド パイプラインを作成する

Web ブラウザーを開き、新しいプロジェクト (https://dev.azure.com/\<organizationname>/VotingSample) に移動します

[パイプライン] タブを選んで、[パイプラインの作成] を選びます。

新しいパイプライン

[従来のエディターを使用する] を選択して、YAML なしでパイプラインを作成します。

クラシック エディター

ソースとして [Azure Repos Git]、[チーム プロジェクト] で VotingSample、[リポジトリ] でVotingApplication、[手動のビルドとスケジュールされたビルドの既定のブランチ] で master をそれぞれ選びます。 その後 [続行] を選択します。

リポジトリを選択する

[テンプレートの選択][Azure Service Fabric アプリケーション] テンプレートを選んで、[適用] を選びます。

ビルド テンプレートを選択する

[タスク] で、[エージェント プール] として「Azure Pipelines」、[エージェントの指定] として「windows-2022」を入力します。

タスクを選択する

[トリガー][継続的インテグレーションを有効にする] をオンにして、継続的インテグレーションを有効にします。 [ブランチ フィルター] 内で、[ブランチ仕様] が既定の [マスター] になります。 [保存してキューに登録] を選択して、ビルドを手動で開始します。

トリガーを選択する

プッシュまたはチェックイン時にもビルドがトリガーされます。 ビルドの進行状況を確認するには、[ビルド] タブに切り替えます。ビルドが正常に実行されることを確認したら、アプリケーションをクラスターにデプロイするリリース パイプラインを定義します。

リリース パイプラインを作成する

[パイプライン] タブ、[リリース][+ 新しいパイプライン] の順に選択します。 [テンプレートの選択] で一覧から [Azure Service Fabric の配置] テンプレートを選択し、[適用] を選択します。

リリース テンプレートを選択する

[タスク] を選んでから、[+ 新規] を選んで新しいクラスター接続を追加します。

クラスターの接続を追加する

[新しい Service Fabric 接続] ビューで、[証明書ベース] または [Microsoft Entra 資格情報] の認証を選びます。 クラスター エンドポイント "tcp://mysftestcluster.southcentralus.cloudapp.azure.com:19000" (またはデプロイ先のクラスターのエンドポイント) を指定します。

証明書ベースの認証の場合は、クラスターの作成に使用したサーバー証明書のサーバー証明書拇印を追加します。 [クライアント証明書] で、クライアント証明書ファイルの Base 64 エンコーディングを追加します。 証明書の Base 64 でエンコードされた表現を取得する方法については、そのフィールドのヘルプ ポップアップをご覧ください。 また、証明書のパスワードも追加します。 別のクライアント証明書がない場合は、クラスター証明書またはサーバー証明書を使用できます。

Microsoft Entra の資格情報の場合は、クラスターの作成に使用したサーバー証明書のサーバー証明書拇印を追加し、[ユーザー名] および [パスワード] フィールドにクラスターへの接続で使用する資格情報を指定します。

[保存] を選択します。

次に、ビルド成果物をパイプラインに追加して、リリース パイプラインでビルドの出力を見つけられるようにします。 [パイプライン] を選択し、[成果物]->[+ 追加] の順に選択します。 [ソース (ビルド定義)] で、前に作成したビルド パイプラインを選択します。 [追加] を選んで、ビルド成果物を保存します。

成果物を追加する

ビルドの完了時にリリースが自動的に作成されるように、継続的配置トリガーを有効にします。 成果物の稲妻アイコンを選んで、トリガーを有効にし、[保存] を選んでリリース パイプラインを保存します。

トリガーを有効にする

[リリースの作成] ->[作成] を選び、リリースを手動で作成します。 [リリース] タブで、リリースの進行状況を監視できます。

デプロイが成功し、アプリケーションがクラスターで実行されていることを確認します。 Web ブラウザーを開き、https://mysftestcluster.southcentralus.cloudapp.azure.com:19080/Explorer/ に移動します。 アプリケーションのバージョンを記録しておきます。 この例では 1.0.0.20170616.3 です。

変更のコミットとプッシュ、リリースのトリガー

Azure DevOps へのコード変更をチェックインして、継続的インテグレーション パイプラインが機能していることを確認します。

コードを記述している間、Visual Studio の [Git 変更] ウィンドウの [変更] セクションで、プロジェクトに対するファイルの変更が追跡されます。

[変更] ビューで、更新について説明するメッセージを追加し、変更をコミットします。

すべてコミットする

[Git 変更] ウィンドウで [プッシュ] ボタン (上矢印) を選んで、Azure Pipelines のコードを更新します。

変更をプッシュする

Azure Pipelines へ変更をプッシュすると、ビルドが自動的にトリガーされます。 ビルドの進行状況を確認するには、https://dev.azure.com/organizationname/VotingSample[パイプライン] タブに切り替えます。

ビルドが完了すると、リリースが自動的に作成され、クラスター上のアプリケーションのアップグレードが開始されます。

デプロイが成功し、アプリケーションがクラスターで実行されていることを確認します。 Web ブラウザーを開き、https://mysftestcluster.southcentralus.cloudapp.azure.com:19080/Explorer/ に移動します。 アプリケーションのバージョンを記録しておきます。 この例では 1.0.0.20170815.3 です。

ブラウザー ウィンドウで実行されている Service Fabric Explorer の投票アプリのスクリーンショット。アプリ バージョン

アプリケーションの更新

アプリケーションで、コードを変更します。 前の手順に従って、変更を保存し、コミットします。

アプリケーションのアップグレードが開始されると、Service Fabric Explorer でアップグレードの進行状況を見ることができます。

Service Fabric Explorer の投票アプリのスクリーンショット。ステータス メッセージ [アップグレード中] とメッセージ [アップグレードが進行中] が強調表示されています。

アプリケーションのアップグレードには数分かかる場合があります。 アップグレードが完了すると、アプリケーションは次のバージョンで実行されます。 この例では 1.0.0.20170815.4 です。

ブラウザー ウィンドウで実行されている Service Fabric Explorer の投票アプリのスクリーンショット。更新されたアプリ バージョン

次のステップ

このチュートリアルでは、以下の内容を学習しました。

  • プロジェクトにソース管理を追加する
  • ビルド パイプラインを作成する
  • リリース パイプラインを作成する
  • アプリケーションを自動的にデプロイおよびアップグレードする

次のチュートリアルに進みます。