エージェント プール

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2015

注意

Microsoft Team Foundation Server (TFS) 2018 以前のバージョンでは、ビルドとリリースの "パイプライン" は "定義"、"実行" は "ビルド"、"サービス接続" は "サービス エンドポイント"、"ステージ" は "環境"、"ジョブ" は "フェーズ" と呼ばれます。

エージェント を個別に管理するのではなく、エージェントを エージェントプール に編成します。 TFS では、プールのスコープはサーバー全体になります。これにより、プロジェクトコレクションとプロジェクト間でエージェントプールを共有できるようになります。

エージェントキュー は、プロジェクト内の エージェントプール へのアクセスを提供します。 ビルドまたはリリースパイプラインを作成するときに、使用するキューを指定します。 キューは、TFS 2017 以降のプロジェクトにスコープが設定されているため、プロジェクト内のビルドおよびリリースパイプライン間でのみ使用できます。

エージェントプールを複数のプロジェクトで共有するには、これらの各プロジェクトで、同じエージェントプールを指すエージェントキューを作成します。 複数のキューで同じエージェントプールを使用できますが、1つのプロジェクト内の複数のキューで同じエージェントプールを使用することはできません。 また、各エージェントキューで使用できるエージェントプールは1つだけです。

TFS 2017 および TFS 2018 ビルドシステムのアーキテクチャ

エージェントプールは、プロジェクトコレクションにスコープが設定されます。

TFS 2015 ビルドシステムのアーキテクチャ

エージェント を個別に管理するのではなく、エージェントを エージェントプール に編成します。 Azure Pipelines では、プールのスコープは組織全体になります。そのため、プロジェクト間でエージェントコンピューターを共有できます。 Azure DevOps Server では、エージェントプールのスコープはサーバー全体になります。そのため、プロジェクトとコレクション間でエージェントコンピューターを共有できます。

エージェントを構成するときは、1つのプールに登録され、パイプラインを作成するときに、パイプラインで使用するプールを指定します。 パイプラインを実行すると、パイプラインの 要求 を満たすプールのエージェントで実行されます。

エージェントプールの作成と管理は、[管理者の設定] の [エージェントプール] タブで行います。

組織の管理者は、[管理者の設定] の [エージェントプール] タブからエージェントプールを作成して管理します。

  1. [ Azure DevOps]、[ 組織の設定] の順に選択します。

    [組織の設定] を選択します。

  2. [ エージェントプール] を選択します。

    [エージェントプール] タブを選択します。

  1. [ Azure DevOps]、[ コレクションの設定] の順に選択します。

    [コレクションの設定] を選択します。

  2. [ エージェントプール] を選択します。

    [エージェントプール] を選択します。

  1. [ Azure DevOps]、[ コレクションの設定] の順に選択します。

    コレクション設定、2019。

  2. [ エージェントプール] を選択します。

    エージェントプール、2019を選択します。

  1. プロジェクトに移動し、[ 設定 ] (歯車アイコン) > エージェントキュー] を選択します。

    [設定]、[エージェントキュー]、[2018] の順に選択します。

  2. [ プールの管理] を選択します。

    [プールの管理]、[2018] の順に選択します。

  1. プロジェクトに移動し、[ 設定 ] (歯車アイコン) > エージェントキュー] を選択します。

    [設定]、[エージェントキュー]、[2017] の順に選択します。

  2. [ プールの管理] を選択します。

    [プールの管理]、[2017] の順に選択します。

  1. プロジェクトに移動し、[ プロジェクトの管理 ] (歯車アイコン) を選択します。

    プロジェクト2015を管理します。

  2. [ コントロールパネル] を選択します。

    [コントロールパネル]、[2015] の順に選択します。

  3. [ エージェントプール] を選択します。

    エージェントプール、2015を選択します。

エージェントキューは、プロジェクト設定の [エージェントキュー] タブから作成および管理します。

プロジェクトチームのメンバーである場合は、プロジェクト設定の [エージェントプール] タブからエージェントキューを作成し、管理します。

プロジェクトに移動し、[ プロジェクトの設定]、[ エージェントプール] の順に選択します。

プロジェクトに移動し、[プロジェクトの設定]、[エージェントプール] の順に選択します。

プロジェクトに移動し、[ プロジェクトの設定]、[ エージェントプール] の順に選択します。

プロジェクトに移動し、[プロジェクトの設定]、[エージェントプール] (2020) の順に選択します。

プロジェクトに移動し、[ プロジェクトの設定]、[ エージェントプール] の順に選択します。

プロジェクトに移動し、[プロジェクトの設定]、[エージェントプール] (2019) の順に選択します。

プロジェクトに移動し、[ 設定 ] (歯車アイコン) > エージェントキュー] を選択します。

[設定]、[エージェントキュー]、[TFS 2018] の順に選択します。

プロジェクトに移動し、[ 設定 ] (歯車アイコン) > エージェントキュー] を選択します。

[設定]、[エージェントキュー]、[TFS 2017] の順に選択します。

  1. プロジェクトに移動し、[ プロジェクトの管理 ] (歯車アイコン) を選択します。

    プロジェクトに移動し、[プロジェクトの管理]、[TFS 2015] の順に選択します。

  2. [ コントロールパネル] を選択します。

    TFS 2015 の [コントロールパネル] を選択します。

  3. 目的のプロジェクトコレクションを選択し、[ コレクション管理の表示] ページ を選択します。

    プロジェクトコレクションの管理、TFS 2015。

    1. エージェントキュー を選択します (TFS 2015 の場合は、[ビルド]、[キュー] の順に選択します)。

      [ビルド]、[キュー] の順に選択します。

既定のエージェントプール

既定では、次のエージェントプールが提供されます。

  • さまざまな Windows、Linux、macOS イメージでホストされるプールを Azure Pipelines します。 使用可能なイメージとインストールされているソフトウェアの完全な一覧については、「 Microsoft がホストするエージェント」を参照してください。

    注意

    ホストされている Azure Pipelines プールは、対応するイメージにマップされた名前を持つ、以前にホストされていたプールを置き換えます。 以前にホストされていたプール内のジョブは、新しい Azure Pipelines ホストされるプール内の正しいイメージに自動的にリダイレクトされます。 状況によっては、以前のプール名は引き続き表示される場合がありますが、ホストされているジョブは Azure Pipelines プールを使用して実行されます。 詳細については、 154 1 2019 年7月のリリースノートの1 つのホスト型プールのリリースノートを参照してください。

既定では、プロジェクト内のすべての共同作成者は、ホストされたプールの ユーザー ロールのメンバーです。 これにより、プロジェクト内のすべての共同作成者は、Microsoft がホストするエージェントを使用してパイプラインを作成および実行できます。

パイプラインでのプールとエージェントの選択

Azure DevOps Services YAML パイプラインの Azure Pipelines プールから Microsoft がホストするエージェントを選択するには、この表の Yaml VM イメージラベル を使用して、イメージの名前を指定します。

pool:
  vmImage: ubuntu-16.04

要求のないプライベートプールを使用するには、次のようにします。

pool: MyPool

詳細については、「プールyaml スキーマ」を参照してください。

プールとキューの管理

エージェントプールの作成と管理は、[管理者の設定] の [エージェントプール] タブで行います。

組織の管理者は、[管理者の設定] の [エージェントプール] タブからエージェントプールを作成して管理します。

  1. [ Azure DevOps]、[ 組織の設定] の順に選択します。

    [組織の設定] を選択します。

  2. [ エージェントプール] を選択します。

    [エージェントプール] タブを選択します。

  1. [ Azure DevOps]、[ コレクションの設定] の順に選択します。

    [コレクションの設定] を選択します。

  2. [ エージェントプール] を選択します。

    [エージェントプール] を選択します。

  1. [ Azure DevOps]、[ コレクションの設定] の順に選択します。

    コレクション設定、2019。

  2. [ エージェントプール] を選択します。

    エージェントプール、2019を選択します。

  1. プロジェクトに移動し、[ 設定 ] (歯車アイコン) > エージェントキュー] を選択します。

    [設定]、[エージェントキュー]、[2018] の順に選択します。

  2. [ プールの管理] を選択します。

    [プールの管理]、[2018] の順に選択します。

  1. プロジェクトに移動し、[ 設定 ] (歯車アイコン) > エージェントキュー] を選択します。

    [設定]、[エージェントキュー]、[2017] の順に選択します。

  2. [ プールの管理] を選択します。

    [プールの管理]、[2017] の順に選択します。

  1. プロジェクトに移動し、[ プロジェクトの管理 ] (歯車アイコン) を選択します。

    プロジェクト2015を管理します。

  2. [ コントロールパネル] を選択します。

    [コントロールパネル]、[2015] の順に選択します。

  3. [ エージェントプール] を選択します。

    エージェントプール、2015を選択します。

エージェントキューは、プロジェクト設定の [エージェントキュー] タブから作成および管理します。

プロジェクトチームのメンバーである場合は、プロジェクト設定の [エージェントプール] タブからエージェントキューを作成し、管理します。

プロジェクトに移動し、[ プロジェクトの設定]、[ エージェントプール] の順に選択します。

プロジェクトに移動し、[プロジェクトの設定]、[エージェントプール] の順に選択します。

プロジェクトに移動し、[ プロジェクトの設定]、[ エージェントプール] の順に選択します。

プロジェクトに移動し、[プロジェクトの設定]、[エージェントプール] (2020) の順に選択します。

プロジェクトに移動し、[ プロジェクトの設定]、[ エージェントプール] の順に選択します。

プロジェクトに移動し、[プロジェクトの設定]、[エージェントプール] (2019) の順に選択します。

プロジェクトに移動し、[ 設定 ] (歯車アイコン) > エージェントキュー] を選択します。

[設定]、[エージェントキュー]、[TFS 2018] の順に選択します。

プロジェクトに移動し、[ 設定 ] (歯車アイコン) > エージェントキュー] を選択します。

[設定]、[エージェントキュー]、[TFS 2017] の順に選択します。

  1. プロジェクトに移動し、[ プロジェクトの管理 ] (歯車アイコン) を選択します。

    プロジェクトに移動し、[プロジェクトの管理]、[TFS 2015] の順に選択します。

  2. [ コントロールパネル] を選択します。

    TFS 2015 の [コントロールパネル] を選択します。

  3. 目的のプロジェクトコレクションを選択し、[ コレクション管理の表示] ページ を選択します。

    プロジェクトコレクションの管理、TFS 2015。

    1. エージェントキュー を選択します (TFS 2015 の場合は、[ビルド]、[キュー] の順に選択します)。

      [ビルド]、[キュー] の順に選択します。

プールは、ジョブの実行に使用されます。 ジョブのプールを指定する方法について説明します。

さまざまなチームや目的で使用する自己ホスト型エージェントが多数ある場合は、以下で説明するように追加のプールを作成することもできます。

エージェントプールの作成

自己ホスト型エージェントプールを作成する必要がある一般的な状況を次に示します。

  • 自分がプロジェクトのメンバーであり、チームが所有している一連のコンピューターを使用してビルドジョブと配置ジョブを実行する場合。 まず、プロジェクト設定の [エージェントプール] ページで [ セキュリティ ] を選択して、プロジェクトでプールを作成するためのアクセス許可を持っていることを確認します。 新しいプールを作成できるようにするには、 管理者 ロールが必要です。 次に、[ プールの追加 ] を選択し、組織レベルで 新しい プールを作成するオプションを選択します。 最後に、エージェントプールの一部となるようにエージェントを インストール して構成します。

  • インフラストラクチャチームのメンバーであり、すべてのプロジェクトで使用するエージェントのプールを設定することを希望しています。 まず、組織の設定の [エージェントプール] ページに移動して、管理者 ロールが設定されている すべてのエージェントプール のグループのメンバーであることを確認します。 次に、 新しいエージェントプール を作成し、プールの作成中に、 すべてのプロジェクトで対応するエージェントプールを自動プロビジョニング するオプションを選択します。 この設定により、すべてのプロジェクトがこのエージェントプールにアクセスできるようになります。 最後に、エージェントプールの一部となるようにエージェントを インストール して構成します。

  • 複数のプロジェクトを含む一連のエージェントコンピューターを共有するが、すべてではない場合。 最初に、いずれかのプロジェクトの設定に移動し、エージェントプールを追加して、組織レベルで 新しい プールを作成するオプションを選択します。 次に、他の各プロジェクトにアクセスし、そのそれぞれにプールを作成し、組織の既存の エージェントプールを使用 するオプションを選択します。 最後に、エージェントを共有エージェントプールの一部として インストール して構成します。

  • 自分がプロジェクトのメンバーであり、チームが所有している一連のコンピューターを使用してビルドジョブと配置ジョブを実行する場合。 まず、管理者 ロールを持つ すべてのプール のグループのメンバーであることを確認します。 次に、プロジェクト設定に 新しいプロジェクトエージェントプール を作成し、 新しい組織エージェントプールを作成 するオプションを選択します。 その結果、組織とプロジェクトレベルの両方のエージェントプールが作成されます。 最後に、エージェントプールの一部となるようにエージェントを インストール して構成します。

  • インフラストラクチャチームのメンバーであり、すべてのプロジェクトで使用するエージェントのプールを設定することを希望しています。 まず、管理者 ロールが設定されている すべてのプール のグループのメンバーであることを確認します。 次に、管理者設定で 新しい組織エージェントプール を作成し、プールの作成中に、 すべてのプロジェクトで対応するプロジェクトエージェントプールを自動プロビジョニング するオプションを選択します。 この設定により、すべてのプロジェクトが組織のエージェントプールを指すプールを持つことが保証されます。 システムは、既存のプロジェクトのプールを作成し、その後、新しいプロジェクトが作成されるたびにそのプールを作成します。 最後に、エージェントプールの一部となるようにエージェントを インストール して構成します。

  • 複数のプロジェクトを含む一連のエージェントコンピューターを共有するが、すべてではない場合。 まず、プロジェクトのいずれかにプロジェクトエージェントプールを作成し、そのプールの作成時に 新しい組織エージェントプールを作成 するオプションを選択します。 次に、他の各プロジェクトにアクセスし、 既存の組織エージェントプールを使用 するオプションを選択して、それぞれのプロジェクトにプールを作成します。 最後に、エージェントを共有エージェントプールの一部として インストール して構成します。

エージェントプールのセキュリティ

エージェントプールのセキュリティのしくみを理解することは、エージェントの共有と使用を制御するのに役立ちます。

ロール は各エージェントプールで定義され、これらのロールの メンバーシップ は、エージェントプールで実行できる操作を制御します。

[組織の設定] のエージェントプールのロール 目的
閲覧者 このロールのメンバーは、エージェントプールおよびエージェントを表示できます。 通常は、エージェントとその正常性の監視を担当するオペレーターを追加するために使用します。
サービス アカウント このロールのメンバーは、組織のエージェントプールを使用してプロジェクトのプロジェクトエージェントプールを作成できます。 上記のガイドラインに従って新しいプロジェクトエージェントプールを作成する場合は、通常、ここにメンバーを追加する必要はありません。
管理者 上記のすべてのアクセス許可に加え、このロールのメンバーは、組織のエージェントプールからエージェントを登録または登録解除できます。 プロジェクトでプロジェクトエージェントプールを作成するときに、組織のエージェントプールを参照することもできます。 さらに、組織のエージェントプールのすべてのロールのメンバーシップを管理することもできます。 組織のエージェントプールを作成したユーザーは、そのプールの管理者ロールに自動的に追加されます。

[エージェントプール] タブの [ すべてのエージェントプール ] ノードを使用して、 すべて の組織エージェントプールのセキュリティを制御します。 個々の組織エージェントプールのロールメンバーシップは、[すべてのエージェントプール] ノードから自動的に継承されます。 TFS または Azure DevOps Server を使用する場合、既定では、TFS と Azure DevOps Server の管理者も [すべてのエージェントプール] ノードの管理者になります。

ロールは各プロジェクトエージェントプールでも定義されます。これらのロールのメンバーシップは、プロジェクトレベルでエージェントプールに対して実行できる操作を制御します。

プロジェクト設定のエージェントプールのロール 目的
閲覧者 このロールのメンバーは、プロジェクトエージェントプールを表示できます。 通常、この方法を使用して、そのプロジェクトエージェントプール内のビルドジョブと配置ジョブの監視を担当するオペレーターを追加します。
User このロールのメンバーは、パイプラインを作成するときにプロジェクトエージェントプールを使用できます。
管理者 上記のすべての操作に加えて、このロールのメンバーは、プロジェクトエージェントプールのすべてのロールのメンバーシップを管理できます。 プールを作成したユーザーは、そのプールの管理者ロールに自動的に追加されます。

[エージェントプール] タブの [ すべてのエージェントプール ] ノードは、プロジェクト内の すべて のプロジェクトエージェントプールのセキュリティを制御するために使用されます。 個々のプロジェクトエージェントプールのロールメンバーシップは、[すべてのエージェントプール] ノードから自動的に継承されます。 既定では、次のグループが "すべてのエージェントプール" の管理者ロールに追加されます: ビルド管理者、リリース管理者、プロジェクト管理者。

[エージェントプール] タブの セキュリティ アクションは、プロジェクト内の すべて のプロジェクトエージェントプールのセキュリティを制御するために使用されます。 個々のプロジェクトエージェントプールのロールメンバーシップは、ここで定義したものから自動的に継承されます。 既定では、次のグループが "すべてのエージェントプール" の管理者ロールに追加されます: ビルド管理者、リリース管理者、プロジェクト管理者。

TFS 2015

TFS 2015 では、エージェントプールで特別な グループ が定義されており、これらのグループのメンバーシップによって実行できる操作が決まります。

エージェントプールの管理者 のメンバーは、プールに新しいエージェントを登録し、管理者またはサービスアカウントとして追加のユーザーを追加できます。

エージェントプール管理者グループにユーザーを追加して、すべてのエージェントプールを管理するアクセス許可を付与します。 これにより、新しいプールを作成し、すべての既存のプールを変更することができます。 Team Foundation 管理者グループのメンバーは、これらすべての操作を実行することもできます。

エージェントプールのサービスアカウント グループ内のユーザーには、特定のプールが作業を受信するためのメッセージキューをリッスンするアクセス許可があります。 ほとんどの場合、このグループのメンバーを管理する必要はありません。 エージェントの登録プロセスによって自動的に処理されます。 エージェントの登録時に指定したサービスアカウント (通常はネットワークサービス) は、エージェントの登録時に自動的に追加されます。

よく寄せられる質問

メンテナンス期間をスケジュールしない場合、エージェントはいつメンテナンスを実行しますか?

ウィンドウがスケジュールされていない場合、そのプール内のエージェントはメンテナンスジョブを実行しません。

メンテナンスジョブとは

古い作業ディレクトリとリポジトリを定期的にクリーンアップするようにエージェントプールを構成することができます。 これにより、エージェントのディスク領域が不足する可能性が低くなります。 メンテナンスジョブは、[エージェントプールの設定] のプロジェクトコレクションまたは組織レベルで構成されます。

メンテナンスジョブの設定を構成するには:

  1. [ Azure DevOps]、[ 組織の設定] の順に選択します。

    [組織の設定] を選択します。

  2. [ エージェントプール] を選択します。

    [エージェントプール] タブを選択します。

  1. [ Azure DevOps]、[ コレクションの設定] の順に選択します。

    [コレクションの設定] を選択します。

  2. [ エージェントプール] を選択します。

    [エージェントプール] を選択します。

  1. [ Azure DevOps]、[ コレクションの設定] の順に選択します。

    コレクション設定、2019。

  2. [ エージェントプール] を選択します。

    エージェントプール、2019を選択します。

  1. プロジェクトに移動し、[ 設定 ] (歯車アイコン) > エージェントキュー] を選択します。

    [設定]、[エージェントキュー]、[2018] の順に選択します。

  2. [ プールの管理] を選択します。

    [プールの管理]、[2018] の順に選択します。

  1. プロジェクトに移動し、[ 設定 ] (歯車アイコン) > エージェントキュー] を選択します。

    [設定]、[エージェントキュー]、[2017] の順に選択します。

  2. [ プールの管理] を選択します。

    [プールの管理]、[2017] の順に選択します。

  1. プロジェクトに移動し、[ プロジェクトの管理 ] (歯車アイコン) を選択します。

    プロジェクト2015を管理します。

  2. [ コントロールパネル] を選択します。

    [コントロールパネル]、[2015] の順に選択します。

  3. [ エージェントプール] を選択します。

    エージェントプール、2015を選択します。

目的のプールを選択し、[ 設定 ] を選択して、そのエージェントプールのメンテナンスジョブの設定を構成します。

重要

メンテナンスジョブの設定を構成するには、[ ビルドキューの管理 ] アクセス許可が必要です。 [ 設定 ] タブまたは [ メンテナンス履歴 ] タブが表示されない場合は、 管理者 ロールに既定で付与されるアクセス許可がありません。 詳細については、「 エージェントプールのセキュリティ」を参照してください。

メンテナンスジョブの設定

TFS のメンテナンスジョブの設定

目的の設定を構成し、[ 保存] を選択します。

[ メンテナンス履歴 ] を選択すると、現在のエージェントプールのメンテナンスジョブ履歴が表示されます。 ログをダウンロードして確認することで、実行されたクリーニングの手順とアクションを確認できます。

メンテナンスジョブの履歴

メンテナンスは、コンピューターごとではなく、エージェントプールごとに実行されます。そのため、1台のコンピューターに複数のエージェントプールがある場合でも、ディスク領域の問題が発生する可能性があります。

既存の組織エージェントプールを使用するプロジェクトエージェントプールを作成しようとしていますが、コントロールが淡色表示されています。なぜでしょうか。

[プロジェクトエージェントプールの作成] ダイアログボックスで、既存の組織エージェントプールが既に別のプロジェクトエージェントプールによって参照されている場合、そのプールを使用することはできません。 各組織エージェントプールは、特定のプロジェクトコレクション内の1つのプロジェクトエージェントプールによってのみ参照できます。

Microsoft ホストプールを選択できず、ビルドをキューに配置できません。 これをどのように修正すればよいですか?

Azure DevOps 組織の所有者に、プールを使用するアクセス許可を付与してもらいます。 「 エージェントプールのセキュリティ」を参照してください。

さらにホストされるビルドリソースが必要です。 どうすればよいですか。

A: Azure Pipelines プールは、クラウドでホストされるビルドエージェントを持つすべての Azure DevOps 組織と、毎月無料のビルド時間 (分) を提供します。 Microsoft がホストするその他のビルドリソースが必要な場合、またはさらに多くのジョブを並行して実行する必要がある場合は、次のいずれかの方法を使用できます。