Share via


Azure Pipelines を使用して HPC ソリューションをビルドしてデプロイする

Azure DevOps ツールを使用すると、Azure Batch ハイ パフォーマンス コンピューティング (HPC) ソリューションのビルドとテストを自動化できます。 Azure Pipelines は、ソフトウェアをビルド、デプロイ、テスト、監視するための最新の継続的インテグレーション (CI) プロセスと継続的デプロイ (CD) プロセスを提供します。 これらのプロセスによってソフトウェアの提供が早まるため、サポート インフラストラクチャや操作ではなくコードに集中することができます。

この記事では、Azure Pipelines と Azure Resource Manager テンプレート (ARM テンプレート) を使用して CI/CD プロセスを設定し、Azure Batch に HPC ソリューションをデプロイする方法について説明します。 この例では、ビルドおよびリリース パイプラインを作成して Azure Batch インフラストラクチャをデプロイし、アプリケーション パッケージをリリースします。 次の図は、コードがローカルで開発されることを前提とした一般的なデプロイ フローを示しています。

パイプラインのデプロイ フローを示す図。

前提条件

この記事の手順を実行するには、以下が必要です。

ソリューションを準備する

この記事の例では、いくつかの ARM テンプレートと、既存のオープンソース ビデオ処理アプリケーションである FFmpeg を使用します。 これらのリソースをコピーまたはダウンロードして、Azure Repos リポジトリにプッシュできます。

重要

この例では、Windows ベースの Batch ノードに Windows ソフトウェアをデプロイします。 Azure Pipelines、ARM テンプレート、Batch では、Linux ソフトウェアとノードも完全サポートされています。

ARM テンプレートを理解する

3 つの機能テンプレートは、ユニットやモジュールと同様に、特定の機能を実装します。 エンド ツー エンドのソリューション テンプレートによって、基になる機能テンプレートがデプロイされます。 このリンク済みテンプレート構造を使用すると、各機能テンプレートを個別にテストし、ソリューション間で再利用できます。

ARM テンプレートを使用したリンク済みテンプレート構造を示す図。

テンプレートについて詳しくは、Microsoft.Batch リソース タイプの Resource Manager テンプレート リファレンス ガイドに関するページを参照してください。

Storage アカウント テンプレート

次のコードを storageAccount.json という名前のファイルとして保存します。 このテンプレートにより、アプリケーションを Batch アカウントにデプロイするために必要な Azure Storage アカウントが定義されます。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "accountName": {
            "type": "string",
            "metadata": {
                 "description": "Name of the Azure Storage Account"
             }
         }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Storage/storageAccounts",
            "name": "[parameters('accountName')]",
            "sku": {
                "name": "Standard_LRS"
            },
            "apiVersion": "2018-02-01",
            "location": "[resourceGroup().location]",
            "properties": {}
        }
    ],
    "outputs": {
        "blobEndpoint": {
          "type": "string",
          "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('accountName'))).primaryEndpoints.blob]"
        },
        "resourceId": {
          "type": "string",
          "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('accountName'))]"
        }
    }
}

Batch アカウント テンプレート

次のコードを batchAccount.json という名前のファイルとして保存します。 このテンプレートにより、Batch アカウントが定義されます。 Batch アカウントは、ノード プール全体でアプリケーションを実行するためのプラットフォームとして機能します。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "batchAccountName": {
           "type": "string",
           "metadata": {
                "description": "Name of the Azure Batch Account"
            }
        },
        "storageAccountId": {
           "type": "string",
           "metadata": {
                "description": "ID of the Azure Storage Account"
            }
        }
    },
    "variables": {},
    "resources": [
        {
            "name": "[parameters('batchAccountName')]",
            "type": "Microsoft.Batch/batchAccounts",
            "apiVersion": "2017-09-01",
            "location": "[resourceGroup().location]",
            "properties": {
              "poolAllocationMode": "BatchService",
              "autoStorage": {
                  "storageAccountId": "[parameters('storageAccountId')]"
              }
            }
          }
    ],
    "outputs": {}
}

Batch プール テンプレート

次のコードを batchAccountPool.json という名前のファイルとして保存します。 このテンプレートにより、Batch アカウントでノード プールとノードが作成されます。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "batchAccountName": {
           "type": "string",
           "metadata": {
                "description": "Name of the Azure Batch Account"
           }
        },
        "batchAccountPoolName": {
            "type": "string",
            "metadata": {
                 "description": "Name of the Azure Batch Account Pool"
             }
         }
    },
    "variables": {},
    "resources": [
        {
            "name": "[concat(parameters('batchAccountName'),'/', parameters('batchAccountPoolName'))]",
            "type": "Microsoft.Batch/batchAccounts/pools",
            "apiVersion": "2017-09-01",
            "properties": {
                "deploymentConfiguration": {
                    "virtualMachineConfiguration": {
                        "imageReference": {
                            "publisher": "MicrosoftWindowsServer",
                            "offer": "WindowsServer",
                            "sku": "2022-datacenter",
                            "version": "latest"
                        },
                        "nodeAgentSkuId": "batch.node.windows amd64"
                    }
                },
                "vmSize": "Standard_D2s_v3"
            }
          }
    ],
    "outputs": {}
}

オーケストレーター テンプレート

次のコードを deployment.json という名前のファイルとして保存します。 この最後のテンプレートは、オーケストレーターとして機能し、基になる 3 つの機能テンプレートをデプロイします。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "StorageContainerUri": {
           "type": "string",
           "metadata": {
                "description": "URI of the Blob Storage Container containing the Azure Resource Manager templates"
            }
        },
        "StorageContainerSasToken": {
           "type": "string",
           "metadata": {
                "description": "The SAS token of the container containing the Azure Resource Manager templates"
            }
        },
        "applicationStorageAccountName": {
            "type": "string",
            "metadata": {
                 "description": "Name of the Azure Storage Account"
            }
         },
        "batchAccountName": {
            "type": "string",
            "metadata": {
                 "description": "Name of the Azure Batch Account"
            }
         },
         "batchAccountPoolName": {
             "type": "string",
             "metadata": {
                  "description": "Name of the Azure Batch Account Pool"
              }
          }
    },
    "variables": {},
    "resources": [
        {
            "apiVersion": "2017-05-10",
            "name": "storageAccountDeployment",
            "type": "Microsoft.Resources/deployments",
            "properties": {
                "mode": "Incremental",
                "templateLink": {
                  "uri": "[concat(parameters('StorageContainerUri'), 'arm-templates/storageAccount.json', parameters('StorageContainerSasToken'))]",
                  "contentVersion": "1.0.0.0"
                },
                "parameters": {
                    "accountName": {"value": "[parameters('applicationStorageAccountName')]"}
                }
            }
        },
        {
            "apiVersion": "2017-05-10",
            "name": "batchAccountDeployment",
            "type": "Microsoft.Resources/deployments",
            "dependsOn": [
                "storageAccountDeployment"
            ],
            "properties": {
                "mode": "Incremental",
                "templateLink": {
                  "uri": "[concat(parameters('StorageContainerUri'), 'arm-templates/batchAccount.json', parameters('StorageContainerSasToken'))]",
                  "contentVersion": "1.0.0.0"
                },
                "parameters": {
                    "batchAccountName": {"value": "[parameters('batchAccountName')]"},
                    "storageAccountId": {"value": "[reference('storageAccountDeployment').outputs.resourceId.value]"}
                }
            }
        },
        {
            "apiVersion": "2017-05-10",
            "name": "poolDeployment",
            "type": "Microsoft.Resources/deployments",
            "dependsOn": [
                "batchAccountDeployment"
            ],
            "properties": {
                "mode": "Incremental",
                "templateLink": {
                  "uri": "[concat(parameters('StorageContainerUri'), 'arm-templates/batchAccountPool.json', parameters('StorageContainerSasToken'))]",
                  "contentVersion": "1.0.0.0"
                },
                "parameters": {
                    "batchAccountName": {"value": "[parameters('batchAccountName')]"},
                    "batchAccountPoolName": {"value": "[parameters('batchAccountPoolName')]"}
                }
            }
        }
    ],
    "outputs": {}
}

リポジトリを設定する

ARM テンプレート、FFmpeg アプリ、YAML ビルド定義ファイルを Azure Repos リポジトリにアップロードします。

  1. 4 つの ARM テンプレートをリポジトリ内の arm-templates フォルダーにアップロードします。

  2. アプリケーション パッケージの場合、Windows 64 ビット バージョンの FFmpeg 4.3.1 をダウンロードして抽出し、それをリポジトリ内の hpc-application フォルダーにアップロードします。

  3. ビルド定義の場合、次の定義を hpc-app.build.yml という名前のファイルとして保存し、それをリポジトリ内の pipelines フォルダーにアップロードします。

    # To publish an application into Batch, you need to
    # first zip the file, and then publish an artifact, so
    # you can take the necessary steps in your release pipeline.
    steps:
    # First, zip up the files required in the Batch account.
    # For this instance, those are the ffmpeg files.
    - task: ArchiveFiles@2
      displayName: 'Archive applications'
      inputs:
        rootFolderOrFile: hpc-application
        includeRootFolder: false
        archiveFile: '$(Build.ArtifactStagingDirectory)/package/$(Build.BuildId).zip'
    # Publish the zip file, so you can use it as part
    # of your Release pipeline later.
    - task: PublishPipelineArtifact@0
      inputs:
        artifactName: 'hpc-application'
        targetPath: '$(Build.ArtifactStagingDirectory)/package'
    

リポジトリの設定が完了すると、フォルダー構造には次のメイン セクションが含まれるはずです。

  • ARM テンプレートを含む arm-templates フォルダー。
  • ffmpeg を含む hpc-application フォルダー。
  • ビルド パイプラインの YAML ビルド定義ファイルを含む pipelines フォルダー。

リポジトリ構造のスクリーンショット。

Note

このコードベース構造の例は、アプリケーション、インフラストラクチャ、パイプラインのコードを同じリポジトリに保存できることを示しています。

Azure パイプラインを作成する

ソース コード リポジトリを設定したら、Azure Pipelines を使用して、アプリケーションのビルド、テスト、デプロイのパイプラインを実装します。 通常、パイプラインのこの段階で、テストを実行してコードを検証し、ソフトウェアの一部をビルドします。 テストの回数と種類、実行するその他のタスクは、ビルドとリリースの全体的な戦略によって異なります。

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

このセクションでは、Batch アカウントで実行される ffmpeg ソフトウェアを処理する YAML ビルド パイプラインを作成します。

  1. Azure DevOps プロジェクトで、左側のナビゲーションから [パイプライン] を選択し、[新しいパイプライン] を選択します。

  2. [コードはどこにありますか?] 画面で、[Azure Repos Git] を選択します。

    [新しいパイプライン] 画面のスクリーンショット。

  3. [リポジトリを選択してください] 画面で、実際のリポジトリを選択します。

    Note

    ビジュアル デザイナーを使用してビルド パイプラインを作成することもできます。 [新しいパイプライン] ページで [従来のエディターを使用する] を選択します。 ビジュアル デザイナーで YAML テンプレートを使用できます。 詳しくは、クラシック パイプラインの定義に関するページを参照してください。

  4. [パイプラインを構成する] 画面で、[既存の Azure Pipelines YAML ファイル] を選択します。

  5. [既存の YAML ファイルを選択する] 画面で、リポジトリから hpc-app.build.yml ファイルを選択し、[続行] を選択します。

  6. [パイプライン YAML をレビューする] 画面で、ビルド構成を確認し、[実行] を選択するか、[実行] の横のドロップダウン キャレットを選択し、[保存] を選択します。 このテンプレートにより、継続的インテグレーションが使用可能になります。このため、リポジトリへの新しいコミットがビルドで設定された条件を満たすと、ビルドが自動的にトリガーされます。

    既存のビルド パイプラインのスクリーンショット。

  7. ライブ ビルドの進行状況の更新を確認できます。 ビルドの結果を確認するには、Azure Pipelines でビルド定義から該当する実行を選択します。

    Azure Pipelines でのビルドからのライブ出力のスクリーンショット。

Note

クライアント アプリケーションを使用して HPC ソリューションを実行する場合、そのアプリケーション用に個別のビルド定義を作成する必要があります。 ハウツー ガイドについては、Azure Pipelines に関するドキュメントを参照してください。

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

Azure Pipelines のリリース パイプラインを使用して、アプリケーションと基になるインフラストラクチャをデプロイします。 リリース パイプラインを使用すると、CD が使用可能になり、リリース プロセスが自動化されます。 アプリケーションと基になるインフラストラクチャをデプロイするには、いくつかの手順があります。

このソリューションのリンク済みテンプレートには、パブリック HTTP または HTTPS エンドポイントからアクセスできる必要があります。 このエンドポイントとして考えられるのは、GitHub リポジトリ、Azure Blob Storage アカウント、または別のストレージの場所です。 アップロードされたテンプレート成果物の安全性を維持するために、それらの成果物をプライベート モードで保持する一方で、何らかの形式の Shared Access Signature (SAS) トークンを使用してそれらの成果物にアクセスします。

次の例では、Azure Storage Blob のテンプレートを使用してインフラストラクチャとアプリケーションをデプロイする方法について説明します。

パイプラインを設定する

  1. Azure DevOps プロジェクトで、左側のナビゲーションから [パイプライン]>[リリース] を選択します。

  2. 次の画面で、[新規]>[新しいリリース パイプライン] を選択します。

  3. [テンプレートの選択] 画面で、[空のジョブ] を選択し、[ステージ] 画面を閉じます。

  4. ページの上部にある [新しいリリース パイプライン] を選択し、パイプラインの名前を、実際のパイプラインに関連する名前 (Deploy Azure Batch + Pool (Azure Batch + プールのデプロイ) など) に変更します。

    初期リリース パイプラインのスクリーンショット。

  5. [成果物] セクションで、[追加] を選択します。

  6. [成果物の追加] 画面で、[ビルド] を選択し、実際のビルド パイプラインを選択して HPC アプリケーションの出力を取得します。

    Note

    ソース エイリアスを作成すること、または既定値をそのまま使用することができます。 [ソース エイリアス] の値は、リリース定義でタスクを作成するときに必要になるため、メモしてください。

    ビルド パイプライン内の hpc-application パッケージへの成果物リンクを示すスクリーンショット。

  7. [追加] を選択します。

  8. パイプライン ページで、[成果物] の横にある [追加] を選択して、別の成果物である Azure Repos リポジトリへのリンクを作成します。 リポジトリ内の ARM テンプレートにアクセスするために、このリンクが必要です。 ARM テンプレートはコンパイルを必要としないため、ビルド パイプラインを介してプッシュする必要はありません。

    Note

    後で使用する [ソース エイリアス] の値をメモします。

    Azure Repos リポジトリへの成果物リンクを示すスクリーンショット。

  9. [変数] タブを選択します。パイプラインに次の変数を作成します。これにより、同じ情報を複数のタスクに再入力せずに済みます。

    Name
    applicationStorageAccountName HPC アプリケーション バイナリを保持するストレージ アカウントの名前。
    batchAccountApplicationName Batch アカウント内のアプリケーションの名前。
    batchAccountName Batch アカウントの名前。
    batchAccountPoolName 処理を実行する仮想マシン (VM) のプールの名前。
    batchApplicationId Batch アプリケーションの一意の ID。形式を次に示します:
    /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>^
    /providers/Microsoft.Batch/batchAccounts/<batchAccountName>^
    /applications/<batchAccountApplicationName>.

    <subscriptionId> プレースホルダーは実際の Azure サブスクリプション ID に置き換え、その他のプレースホルダーは、この一覧のその他の変数に設定する値に置き換えてください。
    batchApplicationVersion Batch アプリケーションのセマンティック バージョン (この場合は 4.3.1)。
    location デプロイするリソースの Azure リージョン。
    resourceGroupName リソースをデプロイするリソース グループの名前。
    storageAccountName リンク済み ARM テンプレートを保持するストレージ アカウントの名前。
    StorageContainerSasToken $(<referenceName>.StorageContainerSasToken). <referenceName プレースホルダーは、次の [Azure ファイル コピー] ステップの [出力変数] セクションで構成する [参照名] の値に置き換えてください。
    StorageContainerUri $(<referenceName>.StorageContainerUri). <referenceName> プレースホルダーは、[Azure ファイル コピー] ステップの [出力変数] セクションで構成する [参照名] の値に置き換えてください。

    Azure Pipelines リリースに設定された変数を示すスクリーンショット。

  10. [タスク] タブを選択し、[エージェント ジョブ] を選択します。

  11. [エージェント ジョブ] 画面の [エージェント プール] で、[Azure パイプライン] を選択します。

  12. [エージェントの指定][windows-latest] (Windows 最新) を選択します。

    エージェント ジョブの設定を示すスクリーンショット。

タスクの追加

以下を行うために 6 つのタスクを作成します。

  • zip 形式の ffmpeg ファイルをダウンロードする。
  • 入れ子になった ARM テンプレートをホストするストレージ アカウントをデプロイする。
  • ARM テンプレートをストレージ アカウントにコピーする。
  • Batch アカウントと必要な依存関係をデプロイする。
  • Batch アカウントでアプリケーションを作成する。
  • Batch アカウントにアプリケーション パッケージをアップロードする。

次の手順で指定する新しいタスクごとに、以下を行います。

  1. 左側のウィンドウで、[エージェント ジョブ] の横にある + 記号を選択します。

  2. 右側のウィンドウで、指定のタスクを検索して選択します。

  3. プロパティを追加または選択して、タスクを構成します。

  4. [追加] を選択します。

    HPC アプリケーションを Azure Batch にリリースするために使用されるタスクを示すスクリーンショット。

次のようにタスクを作成します。

  1. [Download Pipeline Artifacts] (パイプライン成果物のダウンロード) タスクを選択し、次のプロパティを設定します。

    • [表示名]: 「Download ApplicationPackage to Agent」(エージェントにアプリケーション パッケージをダウンロードする) と入力します。
    • [成果物名]: 「hpc-application」と入力します。
    • [宛先ディレクトリ]: 「$(System.DefaultWorkingDirectory)」と入力します。
  2. ARM テンプレートを保存する Azure Storage アカウントを作成します。 既存のストレージ アカウントも使用できますが、この自己完結型のサンプルとコンテンツの分離をサポートするために、専用ストレージ アカウントを作成します。

    [ARM Template deployment: Resource Group scope] (ARM テンプレートのデプロイ: リソース グループ スコープ) タスクを選択し、次のプロパティを設定します。

    • [表示名]: 「Deploy storage account for ARM templates」(ARM テンプレートのストレージ アカウントをデプロイする) と入力します。
    • [Azure Resource Manager 接続]: 適切な Azure サブスクリプションを選択します。
    • [サブスクリプション]: 適切な Azure サブスクリプションを選択します。
    • [アクション]: [Create or update resource group] (リソース グループを作成または更新する) を選択します。
    • [リソース グループ]: 「$(resourceGroupName)」と入力します。
    • [場所]: 「$(location)」と入力します。
    • [テンプレート]: 「$(System.ArtifactsDirectory)/<AzureRepoArtifactSourceAlias>/arm-templates/storageAccount.json」と入力します。 <AzureRepoArtifactSourceAlias> プレースホルダーは、前にメモしたリポジトリのソース エイリアスに置き換えてください。
    • [テンプレート パラメーターのオーバーライド] : 「 -accountName $(storageAccountName) 」と入力します。
  3. ソース管理からストレージ アカウントに成果物をアップロードします。 この Azure ファイル コピー タスクの一部として、ストレージ アカウント コンテナー URI と SAS トークンが変数に出力されるため、後のステップでこれらを再利用できます。

    [Azure ファイル コピー] タスクを選択し、次のプロパティを設定します。

    • [表示名]: 「AzureBlob File Copy」(AzureBlob ファイル コピー) と入力します。
    • [ソース]: 「$(System.ArtifactsDirectory)/<AzureRepoArtifactSourceAlias>/arm-templates/」と入力します。 <AzureRepoArtifactSourceAlias> プレースホルダーは、前にメモしたリポジトリのソース エイリアスに置き換えてください。
    • [Azure サブスクリプション]: 適切な Azure サブスクリプションを選択します。
    • [宛先の種類]: [Azure Blob] を選択します。
    • [RM ストレージ アカウント]: 「$(storageAccountName)」と入力します。
    • [コンテナー名]: 「templates」(テンプレート) と入力します。
    • [参照名]: [出力変数] を展開し、「ffmpeg」と入力します。

    Note

    このステップが失敗する場合、Azure DevOps 組織に、ストレージ アカウントのストレージ BLOB 共同作成者ロールがあることを確認してください。

  4. オーケストレーター ARM テンプレートをデプロイして、Batch アカウントとプールを作成します。 このテンプレートには、ストレージ アカウント コンテナーの URI と SAS トークンのパラメーターが含まれています。 ARM テンプレートで必要な変数は、リリース定義の variables セクションに保持され、AzureBlob ファイル コピー タスクから設定されます。

    [ARM Template deployment: Resource Group scope] (ARM テンプレートのデプロイ: リソース グループ スコープ) タスクを選択し、次のプロパティを設定します。

    • [表示名]: 「Deploy Azure Batch」(Azure Batch をデプロイする) と入力します。
    • [Azure Resource Manager 接続]: 適切な Azure サブスクリプションを選択します。
    • [サブスクリプション]: 適切な Azure サブスクリプションを選択します。
    • [アクション]: [Create or update resource group] (リソース グループを作成または更新する) を選択します。
    • [リソース グループ]: 「$(resourceGroupName)」と入力します。
    • [場所]: 「$(location)」と入力します。
    • [テンプレートの場所]: [URL of the file] (ファイルの URL) を選択します。
    • [テンプレート リンク]: 「$(StorageContainerUri)arm-templates/deployment.json$(StorageContainerSasToken)」と入力します。
    • [テンプレート パラメーターのオーバーライド] : 「 -StorageContainerUri $(StorageContainerUri) -StorageContainerSasToken $(StorageContainerSasToken) -applicationStorageAccountName $(applicationStorageAccountName) -batchAccountName $(batchAccountName) -batchAccountPoolName $(batchAccountPoolName) 」と入力します。

    一般的には、Azure Key Vault タスクを使用します。 Azure サブスクリプションに接続されているサービス プリンシパルに適切なアクセス ポリシーが設定されている場合、それによってキー コンテナーからシークレットをダウンロードして、パイプラインで変数として使用できます。 シークレットの名前は、関連付けられている値を使用して設定されます。 たとえば、sshPassword というシークレットは、リリース定義で $(sshPassword) を使用して参照できます。

  5. Azure CLI を呼び出して、Azure Batch でアプリケーションを作成します。

    [Azure CLI] タスクを選択し、次のプロパティを設定します。

    • [表示名]: 「Create application in Azure Batch account」(Azure Batch アカウントでアプリケーションを作成する) と入力します。
    • [Azure Resource Manager 接続]: 適切な Azure サブスクリプションを選択します。
    • [スクリプトの種類]: [PowerShell Core] を選択します。
    • [スクリプトの場所]: [インライン スクリプト] を選択します。
    • [インライン スクリプト]: 「az batch application create --application-name $(batchAccountApplicationName) --name $(batchAccountName) --resource-group $(resourceGroupName)」と入力します。
  6. Azure CLI を呼び出して、関連するパッケージ (この場合は ffmpeg ファイル) をアプリケーションにアップロードします。

    [Azure CLI] タスクを選択し、次のプロパティを設定します。

    • [表示名]: 「Upload package to Azure Batch account」(Azure Batch アカウントにパッケージをアップロードする) と入力します。
    • [Azure Resource Manager 接続]: 適切な Azure サブスクリプションを選択します。
    • [スクリプトの種類]: [PowerShell Core] を選択します。
    • [スクリプトの場所]: [インライン スクリプト] を選択します。
    • [インライン スクリプト]: 「az batch application package create --application-name $(batchAccountApplicationName) --name $(batchAccountName) --resource-group $(resourceGroupName) --version $(batchApplicationVersion) --package-file=$(System.DefaultWorkingDirectory)/$(Release.Artifacts.<AzureBuildArtifactSourceAlias>.BuildId).zip」と入力します。 <AzureBuildArtifactSourceAlias> プレースホルダーは、前にメモしたビルドのソース エイリアスに置き換えてください。

    Note

    アプリケーション パッケージのバージョン番号は変数に設定されます。 この変数により、パッケージの以前のバージョンが上書きされ、Azure Batch にプッシュされるパッケージ バージョンを手動で制御できます。

リリースを作成して実行する

  1. すべてのステップの作成が完了したら、パイプライン ページの上部にある [保存] を選択し、[OK] を選択します。

  2. ページの上部にある [リリースの作成] を選択します。

  3. ライブ リリースの状態を確認するには、ページの上部にあるリリースが作成されたことを示すリンクを選択します。

  4. エージェントから出力されるログを確認するには、ステージにカーソルを合わせ、[ログ] ボタンを選択します。

    リリースの状態を示すスクリーンショット。

環境をテストする

環境が設定されたら、次のテストを実行し、成功することを確認します。 プレースホルダーは、リソース グループと Batch アカウントの実際の値に置き換えてください。

Batch アカウントに接続する

コマンド プロンプトから Azure CLI を使用して、新しい Batch アカウントに接続します。

  1. Azure アカウントに az login でサインインし、指示に従って認証します。
  2. az batch account login -g <resourceGroup> -n <batchAccount> を使用して Batch アカウントを認証します。

使用可能なアプリケーションを一覧表示する

az batch application list -g <resourceGroup> -n <batchAccount>

プールが有効であることを確認する

az batch pool list

コマンド出力で、次のテストで調整する currentDedicatedNodes の値をメモします。

プール サイズを変更する

次のコマンドを実行してプールのサイズを変更し、ジョブとタスクのテストにコンピューティング ノードを使用できるようにします。 <poolName> プレースホルダーは、実際のプール名の値に置き換え、<targetNumber> プレースホルダーは、前のコマンド出力の currentDedicatedNodes よりも大きい数値に置き換えてください。 サイズ変更が完了し、目標とするノード数が表示されるまで、az batch pool list コマンドを実行して状態を確認します。

az batch pool resize --pool-id <poolname> --target-dedicated-nodes <target number>

次のステップ

単純なアプリケーションを介して Batch アカウントを操作する方法について詳しくは、これらのチュートリアルをご覧ください。