チュートリアル: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 内の各デプロイ用にアプリケーションがアップグレードされるよう、 [アプリケーションのアップグレード] チェックボックスをオンにします。 [保存] ハイパーリンクをクリックして設定を発行プロファイルに保存し、 [キャンセル] をクリックしてダイアログ ボックスを閉じます。

Push profile

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

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

Visual Studio の右下隅のステータス バーにある [ソース管理 ->Git に追加] を選択して、プロジェクトの新しいローカル Git リポジトリを作成します。

チーム エクスプローラー[プッシュ] ビューで、 [Push to Azure DevOps](Azure DevOps へのプッシュ) の下にある [Git リポジトリの発行] ボタンを選択します。

Screenshot of the Team Explorer - Synchronization window in Visual Studio. The Publish to Git Repo button is highlighted under Push to Azure DevOps.

電子メールを確認し、[Azure DevOps ドメイン] ドロップダウンからご自身のアカウントを選択します。 リポジトリ名を入力し、[リポジトリの発行] を選択します。

Screenshot of the Push to Azure DevOps settings with the Email, Account, Repository name, and Publish Repository button highlighted.

リポジトリを公開すると、ローカル リポジトリと同じ名前の新しいプロジェクトがご自身のアカウントに作成されます。 既存のプロジェクトでリポジトリを作成するには、 [リポジトリ名] の横にある [詳細] をクリックして、プロジェクトを選択します。 [See it on the web](Web を参照) を選択すると、Web でコードを表示できます。

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

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

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

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

Web ブラウザーを開き、新しいプロジェクト (https://<myaccount>.visualstudio.com/Voting/Voting%20Team/_git/Voting) に移動します。

[パイプライン] タブ、[ビルド][新しいパイプライン] の順に選択します。

New Pipeline

ソースとして [Azure Repos Git] を選択し、[Voting] チーム プロジェクト、[Voting] リポジトリ、[マスター] 既定ブランチまたは手動のビルドおよびスケジュールされたビルドを選択します。 [Continue](続行) をクリックします。

Select repo

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

Choose build template

[タスク][エージェント プール] に「Hosted VS2017」と入力します。

Select tasks

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

Select triggers

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

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

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

Choose release template

[タスク]->[環境 1] の順に選択し、[+ 新規] を選択して、新しいクラスター接続を追加します。

Add cluster connection

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

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

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

[追加] をクリックして、クラスター接続を保存します。

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

Add artifact

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

Enable trigger

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

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

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

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

コードを記述すると、変更内容は Visual Studio によって自動的に追跡されます。 右下のステータス バーで [保留中の変更] アイコン (Pending changes icon shows a pencil and a number.) を選択して、ローカル Git リポジトリに変更をコミットします。

チーム エクスプローラーの [変更] ビューで、更新内容を説明するメッセージを追加し、変更をコミットします。

Commit all

発行されていない変更のステータス バー アイコンを選択 (Unpublished changes) するか、またはチーム エクスプローラーで [同期] ビューを選択します。 [プッシュ] を選択して、Azure Pipelines のコードを更新します。

Push changes

Azure Pipelines へ変更をプッシュすると、ビルドが自動的にトリガーされます。 ビルド パイプラインが正常に完了すると、リリースは自動的に作成され、クラスター上のアプリケーションのアップグレードが開始されます。

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

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

Screenshot of the Voting app in Service Fabric Explorer running in a browser window. The app version

アプリケーションの更新

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

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

Screenshot of the Voting app in Service Fabric Explorer. The Status message

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

Screenshot of the Voting app in Service Fabric Explorer running in a browser window. The updated app version

次のステップ

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

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

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