要求 は、Azure DevOps がパイプラインからエージェントにジョブを送信するために、エージェントに存在する必要がある機能をパイプラインで指定する方法を提供します。 Managed DevOps プールでは、 ImageOverride などの要求は Azure Pipelines の要求と同様に機能します。この場合、パイプライン ジョブは需要に一致する属性を持つ特定のエージェントにルーティングされますが、 WorkFolder や Priority などの一部の要求を使用して、エージェントの属性を構成できます。 この記事では、Managed DevOps プールで使用できる要求とその使用方法について説明します。
作業フォルダー
エージェントの既定の作業フォルダーは、通常、Windows の場合は D:\ ドライブ、Linux の場合は /mnt にあり、 Agent.WorkFolder
predefined 変数を使用してパイプラインで参照できます。 パイプラインで WorkFolder
の需要を指定することで、エージェントの起動時に使用されるドライブとディレクトリ名の両方を変更するには、この場所をオーバーライドできます。 要求に一致する WorkFolder
を持つ実行中のエージェントを含むステートフル プールがある場合、パイプラインはそのエージェントに送信されます。 ステートフル プールを使用していない場合、またはその WorkFolder
で実行されているエージェントがない場合は、新しいエージェントが開始され、指定された WorkFolder
を使用するように構成されます。 指定されたディレクトリが存在しない場合は作成されます。
WorkFolder
のパス名が無効な場合は、既定のエージェント作業フォルダーが使用されます。
パイプラインのWorkFolder
セクションでdemands
の需要を構成して、エージェントの作業フォルダーを設定します。
接続されたデータ ディスクを使用していてそのディスクにエージェントの作業フォルダーが必要な場合は、WorkFolder
を使用し、データ ディスク上のフォルダーをエージェントの作業ディレクトリとして指定。
Windows エージェントの既定の作業フォルダーは通常 、D:\ ドライブ上にあり、 Agent.WorkFolder
predefined 変数を使用してパイプラインで参照できます。
次の例では、WorkFolder
は、文字割り当てられているF
に設定されています。
pool:
name: fabrikam-managed-pool # Name of Managed DevOps Pool
demands:
- WorkFolder -equals f:\custom-work-folder
優先順位
Priority
は、ジョブの優先順位を指定します。 優先順位の高いジョブが最初に実行されます。 有効な値は、 High
、 Medium
、 Low
です。 既定値は Medium
です。
パイプラインのPriority
セクションでdemands
の需要を構成します。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- Priority -equals Low
優先順位の順にキューから実行するジョブが選択されます。 たとえば、エージェントの最大設定が 10 で、パイプラインがこのプールを使用するように構成されているプールがあるとします。 プールは既に 10 個のパイプラインを実行しており、さらに 20 個がキューに入れられます。 たとえば、ホットフィックスをプッシュアウトするために実行する優先順位パイプラインがある場合は、通常、10 個の実行中のパイプラインと 20 個のキューに登録されたパイプラインが完了した後に実行されます。 修正プログラム パイプラインをキューに入れるときに優先度を高に設定すると、エージェントが取得され、以前にキューに入れられていた 20 個のパイプラインの前に実行されます。
複数のジョブが同時にキューに入っている場合は、優先順位の低いジョブが優先順位の高いジョブの前に実行される可能性があります。
複数のジョブを含む 1 つのパイプラインの場合:
- パイプラインにシーケンシャル ジョブを定義する 依存関係がある場合各ジョブの優先度設定に関係なく、パイプラインで指定された順序で順次ジョブが実行されます。
- パイプラインに複数のジョブが並列で実行されるように構成されている場合 ( YAML パイプラインの既定値)、ジョブは同時にキューに登録され、優先順位の低いパイプライン内のジョブは、優先順位の高いパイプライン内のジョブの前に実行される可能性があります。
画像上書き
プールに複数のイメージがある場合は、 ImageOverride
要求を使用し、使用するイメージの エイリアス を指定することで、特定のイメージを使用するようにパイプラインを構成できます。 Azure Pipelines イメージを使用している場合は、その 定義済みのエイリアスを使用できます。 他のすべてのイメージについては、独自のエイリアス 構成する必要があります。
重要
プールに複数のイメージがあり、パイプラインで要求を使用してイメージを指定しない場合、パイプラインはプール内の最初に一覧表示されたイメージを使用して実行されます。 プール内のイメージの順序を変更するには、images
セクションの fabricProfile
一覧のイメージの順序を変更するか (テンプレートを使用している場合)、またはドラッグ アンド ドロップを使用して Azure portal のイメージ 一覧 イメージを並べ替えます。
次の例では、パイプラインは、 ubuntu-24.04-gen2
エイリアスで構成されたイメージを使用して実行するように構成されています。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageOverride -equals ubuntu-24.04-gen2
重要
名前にスペースが含まれている場合でも、 ImageOverride
の要求にエイリアス名を引用符で囲まないでください。
画像バージョン上書き
イメージ構成で指定されたバージョンではなく、特定のバージョンのイメージを使用する場合は、 ImageVersionOverride
要求を使用できます。 たとえば、イメージの latest に昇格する前に、新しいイメージ バージョンを検証するために使用できます。
重要
ImageVersionOverride
を使用してプール設定で構成されているものとは異なるイメージ バージョンを指定すると、指定したイメージ バージョンを使用して各エージェントがオンデマンドで開始されます。
スタンバイ エージェント は プールの構成で指定されたイメージ バージョンを使用してプロビジョニングされるため、 ImageVersionOverride
を使用する場合、スタンバイ エージェントはそのバージョンと一致せず、新しいエージェントが起動されます。
パイプラインのImageVersionOverride
セクションでdemands
の需要を構成します。 次の例では、ImageVersionOverride
の20250427.1.0
を指定します。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageVersionOverride -equals 20250427.1.0
ヒント
イメージの更新が原因でパイプラインが失敗すると思われる場合は、「 トラブルシューティング - イメージの更新があったかどうかを確認する」の手順に従ってください。
カスタム機能
ステートフル プールがあり、実行中の特定のエージェント インスタンスでジョブを実行する方法が必要な場合は、 CustomCapabilities
要求を使用できます。
重要
CustomCapabilities
の要求は、ステートフル プール内のエージェントにのみ適用されます。 ステートレス プールを使用している場合は、すべてのジョブの新しいエージェント イメージを取得します。
パイプラインで CustomCapabilities
要求を指定した場合、同じ需要を持つパイプラインが以前に実行されていて、パイプラインを実行したステートフル エージェントがまだオンラインの場合、そのエージェントがパイプラインの実行に使用されます。
CustomCapabilities
の需要に一致するオンライン エージェントがない場合、エージェントはプールからプロビジョニングされ、CustomCapabilities
要求でタグ付けされ、パイプラインの実行に使用されます。 同じ CustomCapabilities
要求を持つ後続のジョブは、そのエージェントがオンラインである限り、そのタグ付けされたエージェント インスタンスを使用してジョブを実行します。
次の例では、ステートフル プール内の windows-2022
Azure Pipelines イメージを使用してパイプラインを実行します。 オンライン エージェントがジョブを受け入れる準備が整い、 CustomCapabilities
属性 (以前にエージェントで実行されたパイプラインによって設定) でタグ付けされている場合、そのエージェントはこのパイプラインの実行に使用されます。 この要求に一致するオンライン エージェントがない場合は、次に使用可能なエージェントがジョブの実行に使用され、エージェントには CustomCapabilities
属性のタグが付けられます。 オンラインでジョブの準備ができている場合、この要求を伴うパイプラインの実行は、このエージェントで実行されます。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageOverride -equals windows-2022
- CustomCapabilities -equals MyCustomValue
たとえば、複製に時間がかかる大規模なリポジトリがあり、このリポジトリから実行される複数のパイプラインがあるとします。 パイプラインで同じ CustomCapabilities
需要を使用すると、リポジトリが既に複製されているエージェントを使用して、2 番目のパイプラインをより迅速に実行できます。