確認要求
要求 は、Azure DevOps がパイプラインからエージェントにジョブを送信するために、エージェントに存在する必要がある機能をパイプラインで指定する方法を提供します。 Managed DevOps プールでは、 ImageOverride などの要求は Azure Pipelines の要求と同様に機能します。この場合、パイプライン ジョブは需要に一致する属性を持つ特定のエージェントにルーティングされますが、 WorkFolder や Priority などの一部の要求を使用して、エージェントの属性を構成できます。 この記事では、Managed DevOps プールで使用できる要求とその使用方法について説明します。
WorkFolder
エージェントの既定の作業フォルダーは、通常、Windows の場合は D:\ ドライブ、Linux の場合は /mnt にあり、 Agent.WorkFolder
predefined 変数を使用してパイプラインで参照できます。 パイプラインで WorkFolder
の需要を指定することで、エージェントの起動時に使用されるドライブとディレクトリ名の両方を変更するには、この場所をオーバーライドできます。 要求に一致する WorkFolder
を持つ実行中のエージェントを含むステートフル プールがある場合、パイプラインはそのエージェントに送信されます。 ステートフル プールを使用していない場合、またはその WorkFolder
で実行されているエージェントがない場合は、新しいエージェントが開始され、指定された WorkFolder
を使用するように構成されます。 指定されたディレクトリが存在しない場合は作成されます。 WorkFolder
のパス名が無効な場合は、既定のエージェント作業フォルダーが使用されます。
パイプラインのdemands
セクションでWorkFolder
の需要を構成して、エージェントの作業フォルダーを設定します。 接続されたデータ ディスクを使用していてそのディスクにエージェントの作業フォルダーが必要な場合は、WorkFolder
を使用し、データ ディスク上のフォルダーをエージェントの作業ディレクトリとして指定。
pool:
name: fabrikam-managed-pool # Name of Managed DevOps Pool
demands:
- WorkFolder -equals c:\custom-work-folder # Windows agent example
# Use a folder like /user/local/custom-work-folder for Linux
# or /mnt/storage/sdc/custom-work-folder if you're using a data disk.
優先度
Priority
は、ジョブの優先順位を指定します。 優先順位の高いジョブが最初に実行されます。 有効な値は、 High
、 Medium
、 Low
です。 既定値は Medium
です。
パイプラインのdemands
セクションでPriority
の需要を構成します。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- Priority -equals Low
優先順位の順にキューから実行するジョブが選択されます。 たとえば、エージェントの最大設定が 10 で、パイプラインがこのプールを使用するように構成されているプールがあるとします。 プールは既に 10 個のパイプラインを実行しており、さらに 20 個がキューに入れられます。 たとえば、ホットフィックスをプッシュアウトするために実行する優先順位パイプラインがある場合は、通常、10 個の実行中のパイプラインと 20 個のキューに登録されたパイプラインが完了した後に実行されます。 修正プログラム パイプラインをキューに入れるときに優先度を高に設定すると、エージェントが取得され、以前にキューに入れられていた 20 個のパイプラインの前に実行されます。
複数のジョブが同時にキューに入っている場合は、優先順位の低いジョブが優先順位の高いジョブの前に実行される可能性があります。
複数のジョブを含む 1 つのパイプラインの場合:
- パイプラインにシーケンシャル ジョブを定義する 依存関係がある場合各ジョブの優先度設定に関係なく、パイプラインで指定された順序で順次ジョブが実行されます。
- パイプラインに複数のジョブが並列で実行されるように構成されている場合 ( YAML パイプラインの既定値)、ジョブは同時にキューに登録され、優先順位の低いパイプライン内のジョブは、優先順位の高いパイプライン内のジョブの前に実行される可能性があります。
ImageOverride
プールに複数のイメージがある場合は、 ImageOverride
要求を使用し、使用するイメージの エイリアス を指定することで、特定のイメージを使用するようにパイプラインを構成できます。 Azure Pipelines イメージを使用している場合は、その 定義済みのエイリアスを使用できます。 他のすべてのイメージについては、独自のエイリアス 構成する必要があります。
次の例では、パイプラインは、 ubuntu-20.04-gen2
エイリアスで構成されたイメージを使用して実行するように構成されています。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageOverride -equals ubuntu-20.04-gen2
重要
名前にスペースが含まれている場合でも、 ImageOverride
の要求にエイリアス名を引用符で囲まないでください。
ImageVersionOverride
共有イメージ ギャラリーまたは Azure Marketplace image を使用していて イメージ構成で指定されたバージョンではなく特定のバージョンのイメージを使用する場合は、 ImageVersionOverride
の需要を使用できます。 たとえば、イメージの latest に昇格する前に、新しいイメージ バージョンを検証するために使用できます。 次の例では、2.0.0
のImageVersionOverride
を指定します。
パイプラインのdemands
セクションでImageVersionOverride
の需要を構成します。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageVersionOverride -equals 2.0.0
CustomCapabilities
ステートフル プールがあり、実行中の特定のエージェント インスタンスでジョブを実行する方法が必要な場合は、 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 番目のパイプラインをより迅速に実行できます。