Azure Pipelines のビルドとリリースのパイプライン内で DevTest Labs を使用する

この記事では、Azure Pipelines のビルド パイプラインとリリース パイプラインで DevTest Labs を使用する方法について説明します。

全体的なフロー

基本的なフローは、次のタスクを実行する ビルド パイプライン を用意することです。

  1. アプリケーション コードをビルドします。
  2. DevTest Labs で基本環境を作成します。
  3. カスタム情報を使用して環境を更新します。
  4. DevTest Labs 環境にアプリケーションをデプロイする
  5. コードをテストします。

ビルドが正常に完了すると、 リリース パイプライン はビルド成果物を使用してステージングまたは運用環境をデプロイします。

必要な前提の 1 つは、テストされたエコシステムを再作成するために必要なすべての情報が、Azure リソースの構成を含むビルド成果物内で利用できるということです。 リソースAzure使用するとコストが発生するため、企業はこれらのリソースの使用を制御または追跡する必要があります。 場合によっては、リソースの作成と構成に使用されるAzure Resource Manager テンプレートが、IT などの別の部門によって管理される場合があります。 また、これらのテンプレートは別のリポジトリに格納される場合があります。 ビルドを作成してテストするときの興味深い状況につながります。 運用環境でシステムを再作成するには、コードと構成の両方をビルド 成果物内に格納する必要があります。

ビルドおよびテスト フェーズで DevTest Labs を使用すると、Azure Resource Manager テンプレートとサポート ファイルをビルド ソースに追加できます。 リリース フェーズでは、テストで使用した正確な構成を運用環境にデプロイします。 適切な構成の Azure DevTest Labs 環境の作成タスクは、ビルド成果物内にResource Manager テンプレートを保存します。 この例では、「チュートリアル: Azure App Serviceで .NET Core および SQL Database Web アプリをビルドする」のコードを使用して、Azureで Web アプリをデプロイしてテストします。

全体的なフローを示す図。

Azure リソースの設定

事前に 2 つの項目を作成する必要があります。

  • 2 つのリポジトリ。 チュートリアルのコードと、さらに 2 つの VM を含む Resource Manager テンプレートを含む最初のテンプレート。 2 つ目には、基本Azure Resource Manager テンプレート (既存の構成) が含まれます。
  • 運用コードと構成のデプロイ用のリソース グループ。
  • ビルド パイプラインの 構成リポジトリへの接続 を持つラボ。 metadata.jsonで azuredeploy.json として、Resource Manager テンプレートを構成リポジトリにチェックインします。 この名前により、DevTest Labs はテンプレートを認識してデプロイできます。

ビルド パイプラインによって DevTest Labs 環境が作成され、テスト用のコードがデプロイされます。

ビルド パイプラインを設定する

Azure Pipelinesで、「チュートリアル: Azure App Serviceで .NET Core および SQL Database Web アプリをビルドする」のコードを使用してビルド パイプラインを作成します。 ASP.NET Core テンプレートを使用します。このテンプレートは、コードのビルド、テスト、発行に必要なタスクを設定します。

ASP.NET テンプレートの選択を示すスクリーンショット。

さらに 3 つのタスクを追加して、DevTest Labs で環境を作成し、環境にデプロイします。

3 つのタスクを含むパイプラインを示すスクリーンショット。

環境タスクの作成

Azure DevTest Labs環境の作成タスクで、ドロップダウン リストを使用して次の値を選択します。

  • Azure サブスクリプション
  • ラボの名前
  • リポジトリの名前
  • テンプレートの名前 (環境が格納されているフォルダーを示します)。

情報を手動で入力する代わりに、ページのドロップダウン リストを使用することをお勧めします。 情報を手動で入力する場合は、完全修飾された Azure Resource ID を入力してください。 タスクには、リソース ID ではなくフレンドリ名が表示されます。

環境名は、DevTest Labs 内に表示される名前です。 ビルドごとに一意の名前にする必要があります。 例: TestEnv$(Build.BuildId)

パラメーター ファイルまたはパラメーターを指定して、Resource Manager テンプレートに情報を渡すことができます。

[ 環境テンプレートの出力に基づいて出力変数を作成する] オプションを 選択し、参照名を入力します。 この例では、参照名として 「BaseEnv 」と入力します。 この BaseEnv は、次のタスクを構成するときに使用します。

[Create Azure DevTest Labs Environment]\(環境の作成\) タスクを示すスクリーンショット。

環境設定タスク

2 番目のタスク (Azure DevTest Labs環境の設定タスク) は、既存の DevTest Labs 環境を更新することです。 環境の作成タスクは、このタスクの環境名の構成に使用される BaseEnv.environmentResourceId を 出力します。 この例のResource Manager テンプレートには、adminUserNameadminPassword の 2 つのパラメーターがあります。

Populate Azure DevTest Labs Environment タスクを示すスクリーンショット。

App Service のデプロイ タスク

3番目のタスクはAzure App Service Deployです。 アプリの種類は Web アプリ に設定され、App Service 名は $(WebSite) に設定されます。

App Service のデプロイ タスクを示すスクリーンショット。

リリース パイプラインを設定する

Azure デプロイ: リソース グループの作成または更新と Azure App Service のデプロイという 2 つのタスクを含むリリース パイプラインを作成します。

最初のタスクでは、リソース グループの名前と場所を指定します。 テンプレートの場所はリンク済みのアーティファクトです。 Resource Manager テンプレートにリンクされたテンプレートが含まれている場合は、カスタム リソース グループのデプロイを実装する必要があります。 テンプレートは、公開済みのドロップアーティファクトに含まれています。 Resource Manager テンプレートのテンプレート パラメーターをオーバーライドします。 残りの設定は既定値のままにしておくことができます。

2 番目のタスク [Deploy Azure App Service] で、Azure サブスクリプションを指定し、アプリの種類として [Web アプリ] を選択し、App Service 名として $(WebSite) を選択します。 残りの設定は既定値のままにしておくことができます。

テスト実行

両方のパイプラインが設定されたので、ビルドを手動でキューに入れ、動作することを確認します。 次の手順では、ビルドに適切なトリガーを設定し、ビルドをリリース パイプラインに接続します。

次のステップ

次の記事を参照してください。