チュートリアル: Azure Pipelines を使って Service Fabric アプリケーションの CI/CD を設定する
このチュートリアルは、シリーズの第 "4 部" です。 Azure Pipelines を使って Azure Service Fabric アプリケーションの継続的インテグレーションと継続的デプロイ (CI/CD) を設定する方法について説明します。 チュートリアルを完了するには、既存の Service Fabric アプリケーションが必要です。 このチュートリアルでは、チュートリアル シリーズの第 1 部で説明したアプリケーションを使います。
このチュートリアルでは、次の作業を行う方法について説明します。
- プロジェクトにソース管理を追加する
- Azure Pipelines にビルド パイプラインを作成する
- Azure Pipelines にリリース パイプラインを作成する
- アプリケーションを自動的にデプロイおよびアップグレードする
このチュートリアル シリーズでは、次の操作方法について説明します。
- .NET Service Fabric アプリケーションを構築する
- アプリケーションをリモート クラスターにデプロイする
- ASP.NET Core フロントエンド サービスに HTTPS エンドポイントを追加する
- Azure Pipelines を使って CI/CD を構成する ("このチュートリアル")
- アプリケーションの監視と診断を設定する
前提条件
このチュートリアルを開始する前に
- Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください。
- [Azure の開発] ワークロード、[ASP.NET および Web の開発] ワークロードを含む、Visual Studio 2019 をインストールします。
- Service Fabric SDK をインストールします。
- このチュートリアルに従うなどして、Azure に Windows Service Fabric クラスターを作成します。
- Azure DevOps にプロジェクトを作成して Azure Pipelines を使うことができるように、Azure DevOps 組織を作成します。
投票サンプル アプリケーションをダウンロードする
このシリーズの第 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 で新しい GitHub リポジトリと Azure DevOps リポジトリを作成するには、Git メニューで [Git]>[Git リポジトリの作成] を選択します。
アカウントを選択して、リポジトリ名を入力します。 [作成とプッシュ] を選択します。
リポジトリを発行すると、ローカル リポジトリと同じ名前の新しいプロジェクトが Azure DevOps Services アカウントに作成されます。
新しく作成されたリポジトリを表示するには、https://dev.azure.com/><organizationname>
に移動します。 プロジェクトの名前にカーソルを合わせて、リポジトリ アイコンを選択します。
Azure Pipelines を使って継続的デリバリーを構成する
Azure Pipelines のビルド パイプラインでは、順次実行される一連のビルド ステップが含まれているワークフローを記述します。 Service Fabric クラスターにデプロイするには、Service Fabric アプリケーション パッケージやその他の成果物を生成するビルド パイプラインを作成します。 Azure Pipelines のビルド パイプラインの詳細については、こちらをご覧ください。
Azure Pipelines のリリース パイプラインでは、クラスターにアプリケーション パッケージをデプロイするワークフローを記述します。 ビルド パイプラインとリリース パイプラインを併用すると、ソース ファイルで始まりクラスターでのアプリケーションの実行で終わるワークフロー全体を実行できます。 Azure Pipelines のリリース パイプラインの詳細については、こちらをご覧ください。
ビルド パイプラインを作成する
Web ブラウザーを開いて、https://dev.azure.com/<organization-name>/VotingSample
で新しいプロジェクトに移動します。
[パイプライン] タブを選択して、[パイプラインの作成] を選択します。
YAML を使わずにパイプラインを作成するには、[従来のエディターを使用する] を選択します。
ソースには、[Azure Repos Git] を選択します。 チーム プロジェクトには、[VotingSample] を選択します。 リポジトリには、[VotingApplication] を選択します。 手動のビルドとスケジュールされたビルドについては、既定のブランチのままにします。 その後 [続行] を選択します。
[テンプレートの選択] で、[Azure Service Fabric アプリケーション] テンプレートを選択して、[適用] を選択します。
[タスク] で、[エージェント プール] に「Azure Pipelines」と入力します。 [エージェントの仕様] には、「windows-2022」と入力します。
[トリガー] で、[継続的インテグレーションの有効化]チェックボックスを選択します。 [ブランチ フィルター] では、[ブランチの仕様] は既定の [master] となります。 [保存してキューに登録] を選択して、ビルドを手動で開始します。
プッシュまたはチェックイン時にもビルドがトリガーされます。 ビルドの進行状況を確認するには、[ビルド] タブを選択します。ビルドが正常に実行されたことを確認したら、アプリケーションをクラスターにデプロイするリリース パイプラインを定義します。
リリース パイプラインの作成
[パイプライン] タブを選択して、[リリース]>[新しいパイプライン] を選択します。 [テンプレートの選択] で、[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
でアプリケーションの [Pipelines] タブを選択します。
ビルドが終わると、リリースが自動的に作成され、クラスター上でアプリケーションのアップグレードが開始します。
デプロイが成功し、アプリケーションがクラスターで実行されていることを確認します。 Web ブラウザーを開き、https://mysftestcluster.southcentralus.cloudapp.azure.com:19080/Explorer/
に移動します。 アプリケーションのバージョンを記録しておきます。 この例では 1.0.0.20170815.3
です。
アプリケーションの更新
アプリケーションで、コードを変更します。 変更を保存してコミットします。
アプリケーションのアップグレードが開始したら、Service Fabric Explorer でアップグレードの進行状況を追跡できます。
アプリケーションのアップグレードには数分かかる場合があります。 アップグレードが終わると、アプリケーションが次のバージョンで実行されます。 この例では、バージョン 1.0.0.20170815.4
が実行されています。
次のステップ
次のチュートリアルに進みます。