Azure Pipelines エージェント

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

注意

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

Azure Pipelines を使用したコードのビルドまたはソフトウェアのデプロイには、少なくとも 1 つのエージェントが必要です。 コードや人を追加していけば、それだけ多くが最終的に必要になります。

パイプラインを実行すると、システムは 1 つ以上のジョブを開始します。 エージェントは、一度に 1 つのジョブを実行するエージェント ソフトウェアがインストールされたコンピューティング インフラストラクチャです。

ジョブは、 エージェントのホスト コンピューター または コンテナーで直接実行できます。

Microsoft によってホストされるエージェント

パイプラインがAzure Pipelinesされている場合は、Microsoft ホステッド エージェントを使用してジョブを実行するための便利なオプションがあります。 Microsoft によってホストされているエージェントを使用すると、メンテナンスとアップグレードが自動的に行われます。 パイプラインを実行するたびに、パイプライン内のジョブごとに新しい仮想マシンが取得されます。 仮想マシンは、1 つのジョブの後に破棄されます (つまり、ジョブが仮想マシン ファイル システムに対して行った変更 (コードのチェックアウトなど) は、次のジョブでは使用できなくなります)。 Microsoft でホストされるエージェントは、VM またはコンテナーでジョブを直接実行できます。

Azure Pipelinesは、Microsoft でホストされるエージェントを含むAzure Pipelinesという名前の定義済みのエージェント プールを提供します。

多くのチームにとって、これはジョブを実行する最も簡単な方法です。 まず試してみて、ビルドまたはデプロイに対して機能するかどうかを確認できます。 そうでない場合は、セルフホステッド エージェントを使用できます。

ヒント

Microsoft でホストされるエージェントを無料で試すことができます。

Microsoft でホストされるエージェントについて詳しくは、こちらをご覧ください

セルフホステッド エージェント

ジョブを実行するように独自に設定および管理するエージェントは、 セルフホステッド エージェントです。 セルフホステッド エージェントは、Azure Pipelinesまたは Azure DevOps Server (以前の名前は Team Foundation Server (TFS)) で使用できます。 セルフホステッド エージェントを使用すると、ビルドとデプロイに必要な依存ソフトウェアをより詳細に制御してインストールできます。 また、マシン レベルのキャッシュと構成は実行から実行まで保持されるため、速度が向上する可能性があります。

注意

マシンごとに複数のエージェントをインストールできますが、インストールするエージェントはマシンごとに 1 つだけにすることを強くお勧めします。 2 つ以上のエージェントをインストールすると、パフォーマンスとパイプラインの結果に悪影響を及ぼす可能性があります。

ヒント

セルフホステッド エージェントをインストールする前に、Microsoft ホスト型エージェント プールが機能するかどうかを確認できます。 多くの場合、これは最も簡単な方法です。 試してみてください

エージェントは、Linux、macOS、または Windows マシンにインストールできます。 Docker コンテナーにエージェントをインストールすることもできます。 セルフホステッド エージェントのインストールの詳細については、次を参照してください。

注意

macOS では、ダウンロード アーカイブの特別な属性をクリアして、実行時に Gatekeeper 保護が tar ファイル ./config.sh 内の各アセンブリに対して表示されないようにする必要があります。 次のコマンドは、ファイルの拡張属性をクリアします。

xattr -c vsts-agent-osx-x64-V.v.v.tar.gz  ## replace V.v.v with the version in the filename downloaded.

# then unpack the gzip tar file normally:

tar xvfz vsts-agent-osx-x64-V.v.v.tar.gz

マシンにエージェントをインストールしたら、ジョブの必要に応じて、そのマシンに他のソフトウェアをインストールできます。

注意

エージェントは広く下位互換性があります。 Azure DevOpsがエージェントのより高いバージョンを要求していない限り、エージェントのすべてのバージョンは任意のAzure DevOpsバージョンと互換性がある必要があります。

最新バージョンのエージェントのみがサポートされています。これは、最新のパッチとバグ修正プログラムがすべて含まれていることが保証されている唯一のバージョンであるためです。

Azure 仮想マシン スケール セット エージェント

Azure 仮想マシン スケール セット エージェントは、ニーズに合わせて自動スケールできるセルフホステッド エージェントの一種です。 この弾力性により、専用エージェントを常に実行する必要が減ります。 Microsoft がホストするエージェントとは異なり、エージェントを実行するマシンのサイズとイメージに対する柔軟性があります。

仮想マシン スケール セット、スタンバイ状態を維持するエージェントの数、スケール セット内の仮想マシンの最大数を指定し、エージェントのスケーリングを管理Azure Pipelines。

詳細については、「Azure 仮想マシン スケール セットのエージェント」を参照してください。

並列ジョブ

並列ジョブ は、組織内で同時に実行できるジョブの数を表します。 組織に 1 つの並列ジョブがある場合は、組織内で一度に 1 つのジョブを実行し、最初のジョブが完了するまで追加の同時実行ジョブをキューに入れることもできます。 2 つのジョブを同時に実行するには、2 つの並列ジョブが必要です。 Azure Pipelinesでは、Microsoft ホスト型インフラストラクチャまたは独自の (セルフホステッド) インフラストラクチャで並列ジョブを実行できます。

Microsoft は、少なくとも 1 つの並列ジョブを含むすべての組織で、既定で無料レベルのサービスを提供しています。 実行する必要がある同時実行パイプラインの数によっては、複数の Microsoft ホストまたはセルフホステッド エージェントを同時に使用するために、より多くの並列ジョブが必要になる場合があります。 並列ジョブとさまざまな Free レベルのサービスの詳細については、「Azure Pipelinesの並列ジョブ」を参照してください。

複数のエージェントを同時に使用するには、より多くの並列ジョブが必要になる場合があります。

重要

Azure DevOps Server 2019 以降では、リリースでセルフホステッド同時実行ジョブの料金を支払う必要はありません。 使用しているエージェントの数によってのみ制限されます。

機能

セルフホステッド エージェントには、実行できる機能を示す一連の機能があります。 機能は、エージェント ソフトウェアによって自動的に検出される名前と値のペアです。この場合、それらは システム機能と呼ばれ、定義した場合は ユーザー機能と呼ばれます。

エージェント ソフトウェアは、コンピューターの名前、オペレーティング システムの種類、コンピューターにインストールされている特定のソフトウェアのバージョンなど、さまざまなシステム機能を自動的に決定します。 また、コンピューターで定義されている環境変数は、システム機能の一覧に自動的に表示されます。

注意

環境変数を機能として格納することは、エージェントの実行時に、格納されている機能値を使用して環境変数を設定することを意味します。 また、エージェントの実行中に行われた環境変数に対する変更は、どのタスクでも取得および使用されません。 変更される機密性の高い環境変数があり、それらを機能として格納したくない場合は、環境変数を設定 VSO_AGENT_IGNORE して無視する変数のコンマ区切りの一覧を使用して無視できます。 たとえば、 PATH ソフトウェアをインストールする場合に無視する必要がある重要な変数です。

パイプラインを作成するときは、エージェントの特定の 要求 を指定します。 システムは、パイプラインで指定された 要求 に一致する機能を持つエージェントにのみジョブを送信します。 その結果、エージェント機能を使用すると、ジョブを特定のエージェントに転送できます。

注意

要求と機能は、ジョブの要件を満たすエージェントとジョブを照合できるように、セルフホステッド エージェントで使用するように設計されています。 Microsoft ホステッド エージェントを使用する場合は、ジョブの要件に一致するエージェントのイメージを選択します。そのため、Microsoft ホスト型エージェントに機能を追加することはできますが、Microsoft ホスト型エージェントで機能を使用する必要はありません。

エージェントの機能を構成する

エージェントプールに移動し、目的のエージェントの [機能] タブを選択することで、エージェントのバージョンとシステム機能を含む エージェント の詳細を表示し、そのユーザー 機能 を管理できます。

  1. Web ブラウザーで、エージェント プールに移動します。

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

      Choose Organization settings.

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

      Choose Agent pools tab.

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

      Choose Collection settings.

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

      Choose Agent pools.

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

      Collection settings, 2019.

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

      Choose Agent pools, 2019.

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

      Choose Settings, Agent Queues, 2018.

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

      Choose Manage pools, 2018.

  2. [機能] タブに移動します。

    1. [ エージェント プール ] タブで、目的のエージェント プールを選択します。

      From Agent pools, select the desired agent pool.

    2. [ エージェント] を選択し、目的のエージェントを選択します。

      Select Agents and choose the agent.

    3. [機能] タブ 選択します。

      Choose the Capabilities tab.

      注意

      Microsoft がホストするエージェントでは、システム機能は表示されません。 Microsoft ホステッド エージェントにインストールされているソフトウェアの一覧については、「Microsoft ホスト型 エージェントの使用」を参照してください。

    1. [ エージェント プール ] タブで、目的のプールを選択します。

      Select the desired pool.

    2. [ エージェント] を選択し、目的のエージェントを選択します。

      Select Agents and choose the desired agent.

    3. [機能] タブ 選択します。

      Agent capabilities tab.

    1. [ エージェント プール ] タブで、目的のプールを選択します。

      Select the desired tab, 2019.

    2. [ エージェント] を選択し、目的のエージェントを選択します。

      Choose the desired agent, 2019.

    3. [機能] タブ 選択します。

      Choose the Capabilities tab, 2019.

    目的のエージェントを選択し、[ 機能 ] タブを選択します。

    Agent capabilities tab, 2018.

  3. エージェントに新しい機能を登録するには、[ 新しい機能の追加] を選択します。

ヒント

セルフホステッド エージェントに新しいソフトウェアをインストールした後、新しい機能が表示されるようにエージェントを再起動する必要があります。 詳細については、「Windows エージェントの再起動」、「Linux エージェントの再起動」、および「Mac エージェントの再起動」を参照してください。

Communication

Azure Pipelines との通信

TFS との通信

エージェントは、Azure PipelinesまたはAzure DevOps Serverと通信して、実行する必要があるジョブを決定し、ログとジョブの状態を報告します。 この通信は、常にエージェントによって開始されます。 エージェントからAzure PipelinesまたはAzure DevOps Serverへのすべてのメッセージは、エージェントの構成方法に応じて HTTP または HTTPS 経由で発生します。 このプル モデルを使用すると、次に示すように、エージェントを異なるトポロジで構成できます。

Agent topologies in on-premises installations.

Agent topologies in Azure DevOps Services.

エージェントとAzure PipelinesまたはAzure DevOps Serverの間の一般的な通信パターンを次に示します。

  1. ユーザーは、エージェントプールに追加して、エージェントをAzure PipelinesまたはAzure DevOps Serverに登録します。 エージェント プールにエージェントを登録するには、エージェント プール管理者である必要があります。 エージェント プール管理者の ID は、登録時にのみ必要であり、エージェントに永続化されず、エージェントとAzure PipelinesまたはAzure DevOps Server間のそれ以上の通信にも使用されません。 登録が完了すると、エージェントは リスナー OAuth トークン をダウンロードし、それを使用してジョブ キューをリッスンします。

  2. エージェントは、HTTP 長いポーリングを使用して、新しいジョブ要求が Azure Pipelines/Azure DevOps Server のジョブ キューにポストされたかどうかを確認します。 ジョブが使用可能になると、エージェントはジョブと ジョブ固有の OAuth トークンをダウンロードします。 このトークンは、パイプラインで指定されたスコープ ID のAzure Pipelines/Azure DevOps Serverによって生成されます。 このトークンは有効期間が短く、エージェントがリソース (ソース コードなど) にアクセスしたり、そのジョブ内のAzure PipelinesまたはAzure DevOps Serverでリソース (テスト結果のアップロードなど) を変更したりするために使用されます。

  3. ジョブが完了すると、エージェントはジョブ固有の OAuth トークンを破棄し、リスナー OAuth トークンを使用して新しいジョブ要求があるかどうかを確認します。

エージェントとAzure Pipelines/Azure DevOps Server間で交換されるメッセージのペイロードは、非対称暗号化を使用してセキュリティで保護されます。 各エージェントには公開キーと秘密キーのペアがあり、公開キーは登録中にサーバーと交換されます。 サーバーは、公開キーを使用して、エージェントに送信する前にジョブのペイロードを暗号化します。 エージェントは、秘密キーを使用してジョブの内容の暗号化を解除します。 これにより、パイプラインまたは変数グループに格納されているシークレットは、エージェントと交換されるときにセキュリティで保護されます。

ターゲット サーバーに展開するための通信

エージェントを使用して一連のサーバーに成果物を展開する場合は、それらのサーバーへの "見通し線" 接続が必要です。 Microsoft ホステッド エージェント プールは、既定で Azure Web サイトや Azure で実行されているサーバーに接続されています。

注意

Azure リソースが Azure Virtual Network で実行されている場合は、Microsoft がホストするエージェントがデプロイされているエージェントの IP 範囲を取得して、エージェントによるアクセスを許可するように Azure VNet のファイアウォール規則を構成できます。

オンプレミス環境に Microsoft ホステッド エージェント プールへの接続がない場合 (通常は中間ファイアウォールが原因です)、オンプレミスコンピューターでセルフホステッド エージェントを手動で構成する必要があります。 エージェントは、次の回路図に示すように、ターゲットのオンプレミス環境に接続し、Azure PipelinesまたはTeam Foundation Serverに接続するためにインターネットにアクセスする必要があります。

Agent connectivity for on-premises environments

認証

エージェントを登録するには、エージェント プールの 管理者ロール のメンバーである必要があります。 エージェント プール管理者の ID は登録時にのみ必要であり、エージェントに保存されず、エージェントとAzure PipelinesまたはAzure DevOps Server間の後続の通信では使用されません。 さらに、エージェントを構成するには、サーバーのローカル管理者である必要があります。

エージェントは、次の方法を使用してAzure Pipelinesに対して認証できます。

エージェントは、次のいずれかの方法を使用して、Azure DevOps Serverまたは TFS に対して認証できます。

個人用アクセス トークン (PAT):

PAT を生成して使用して、Azure Pipelines以降の TFS 2017 以降でエージェントを接続します。 PAT は、Azure Pipelines で動作する唯一のスキームです。 PAT には エージェント プール (読み取り、管理) スコープ ( 展開グループ エージェント用)、PAT には展開グループ (読み取り、管理) スコープが必要です。また、複数のエージェントの登録には 1 つの PAT を使用できますが、PAT はエージェントの登録時にのみ使用され、後続の 通信には使用されません。 詳細については、WindowsLinux、または macOS のセルフホステッド エージェントに関する記事の「個人用アクセス トークン (PAT) を使用した認証」セクションを参照してください。

Azure DevOps Serverで PAT を使用するには、サーバーを HTTPS で構成する必要があります。 Web サイトの設定とセキュリティを参照してください。

統合

NTLM や Kerberos などのWindows 認証スキームを使用して、サインインしているユーザーの資格情報を使用して、WINDOWS エージェントを TFS にConnectします。

この認証方法を使用するには、まず TFS サーバーを構成する必要があります。

  1. TFS を実行しているコンピューターにサインインします。

  2. インターネット インフォメーション サービス (IIS) マネージャーを起動します。 TFS サイトを選択し、NTLM や Kerberos などの有効なプロバイダーでWindows認証が有効になっていることを確認します。

IIS TFS windows authentication

IIS TFS windows authentication with ntlm provider

ネゴシエート

NTLM や Kerberos などのWindows 認証スキームを使用して、サインインしているユーザー以外のユーザーとして TFS にConnectします。

この認証方法を使用するには、まず TFS サーバーを構成する必要があります。

  1. TFS を実行しているコンピューターにログオンします。

  2. インターネット インフォメーション サービス (IIS) マネージャーを起動します。 TFS サイトを選択し、ネゴシエート プロバイダーと NTLM や Kerberos などの別の方法でWindows認証が有効になっていることを確認します。

IIS TFS windows authentication

IIS TFS windows authentication with negotiate and ntlm provider

代替

基本認証を使用して TFS にConnectします。 このメソッドを使用するには、まず TFS で HTTPS を構成する必要があります。

この認証方法を使用するには、TFS サーバーを次のように構成する必要があります。

  1. TFS を実行しているコンピューターにサインインします。

  2. 基本認証を構成します。 基本認証を使用tfxした Team Foundation Server 2015 に対する使用を参照してください。

対話型とサービス

セルフホステッド エージェントは、サービスまたは対話型プロセスとして実行できます。 エージェントを構成したら、最初に対話型モードで試して、エージェントが動作することを確認することをお勧めします。 次に、運用環境で使用する場合は、次のいずれかのモードでエージェントを実行して、実行状態を確実に維持することをお勧めします。 また、これらのモードによって、マシンが再起動された場合にエージェントが自動的に起動されることも確認されます。

  1. サービスとして。 オペレーティング システムのサービス マネージャーを利用して、エージェントのライフサイクルを管理できます。 さらに、エージェントをサービスとして実行する場合は、エージェントを自動アップグレードするエクスペリエンスの方が優れています。

  2. 自動ログオンが有効な対話型プロセスとして。 場合によっては、運用環境での使用のためにエージェントの対話的な実行が必要になることがあります (UI テストを実行するためなど)。 エージェントがこのモードで実行するように構成されている場合は、スクリーン セーバーも無効になります。 一部のドメイン ポリシーでは、自動ログオンを有効にしたり、スクリーン セーバーを無効にしたりできないことがあります。 このような場合は、ドメイン ポリシーの除外を求めるか、ドメイン ポリシーが適用されないワークグループ コンピューターでエージェントを実行することが必要になる場合があります。

    注意

    自動ログオンを有効にしたり、スクリーン セーバーを無効にしたりすると、他のユーザーがコンピューターにアクセスし、自動的にログオンするアカウントを使用できるため、セキュリティ上のリスクがあります。 エージェントをこのように構成する場合は、そのコンピューターが物理的に保護されている (たとえば、セキュリティで保護された施設に配置されている) ことを確認する必要があります。 リモート デスクトップを使用してエージェントが自動ログオンで実行されているコンピューターにアクセスする場合は、リモート デスクトップを閉じるだけでコンピューターがロックされ、このエージェントで実行されるすべての UI テストが失敗する可能性があります。 これを回避するには、 tscon コマンドを使用してリモート デスクトップから切断します。 次に例を示します。

    %windir%\System32\tscon.exe 1 /dest:console

エージェント アカウント

エージェントをサービスとして実行するか対話形式で実行するかに関係なく、エージェントの実行に使用するコンピューター アカウントを選択できます。 (これは、エージェントをAzure PipelinesまたはAzure DevOps Serverに登録するときに使用する資格情報とは異なります。エージェント アカウントの選択は、ビルド ジョブとデプロイ ジョブで実行されているタスクのニーズのみに依存します。

たとえば、Windows 認証を使用して外部サービスにアクセスするタスクを実行するには、そのサービスにアクセスできるアカウントを使用してエージェントを実行する必要があります。 ただし、ブラウザーを必要とする Selenium やコード化された UI テストなどの UI テストを実行している場合は、エージェント アカウントのコンテキストでブラウザーが起動されます。

Windowsでは、ネットワーク サービスやローカル サービスなどのサービス アカウントの使用を検討する必要があります。 これらのアカウントにはアクセス許可が制限されており、パスワードの有効期限が切れることはありません。つまり、エージェントの管理に時間の経過と伴う管理が少なくなります。

エージェントのバージョンとアップグレード

エージェント ソフトウェアは、Azure Pipelinesで数週間おきに更新されます。 エージェントのバージョンを形式 {major}.{minor}で示します。 たとえば、エージェントのバージョンが 2.12 の場合、メジャー バージョンは 2 で、マイナー バージョンは 1 です。

Microsoft でホストされるエージェントは常に最新の状態に保たれます。 新しいバージョンのエージェントがマイナー バージョンでのみ異なる場合は、通常、セルフホステッド エージェントを自動的に更新できます (エージェント プールでこの設定を構成し、エージェントを選択します。設定 - 既定値は有効です Azure Pipelines)。 プラットフォーム機能またはパイプラインで使用されるタスクの 1 つに新しいバージョンのエージェントが必要な場合は、アップグレードが要求されます。

セルフホステッド エージェントを対話形式で実行する場合、または使用可能な 新しいメジャー バージョンのエージェントがある場合は、エージェントを手動でアップグレードする必要がある場合があります。 これは、組織の [ エージェント プール ] タブから簡単に行うことができます。 パイプラインは、互換性のあるエージェントを対象とするまで実行されません。

セルフホステッド エージェントを更新するには

  1. Project設定エージェント プールに移動します。

    Project settings, Agent pools

  2. エージェント プールを選択し、[ すべてのエージェントの更新] を選択します。

    Update all agents

    [... ] メニューから [エージェントの更新] を選択して、エージェントを個別に更新することもできます。

    Update agent

  3. [ 更新] を選択して更新を確認します。

    Update all agents confirmation

  4. プール内のエージェントごとに更新要求がキューに登録され、現在実行中のジョブが完了したときに実行されます。 通常、アップグレードにはほんの少しの時間しかかかりません。エージェント ソフトウェアの最新バージョン (約 200 MB) をダウンロードし、解凍して、新しいバージョンでエージェントを再起動するのに十分な時間がかかります。 [ エージェント ] タブでエージェントの状態を監視できます。

Azure DevOps Serverおよび TFS のすべての更新プログラムでエージェント ソフトウェアを更新します。 エージェントのバージョンを形式 {major}.{minor}で示します。 たとえば、エージェントのバージョンが 2.12 の場合、メジャー バージョンは 2 で、マイナー バージョンは 1 です。

Azure DevOps Serverまたは TFS サーバーに新しいバージョンのエージェントがあり、新しいエージェントがマイナー バージョンでのみ異なる場合、通常は自動的にアップグレードできます。 プラットフォーム機能またはパイプラインで使用されるタスクの 1 つに新しいバージョンのエージェントが必要な場合は、アップグレードが要求されます。 Azure DevOps Server 2019 以降では、新しいサーバーのリリースを待つ必要はありません。 新しいバージョンのエージェントをアプリケーション層にアップロードできます。そのバージョンはアップグレードとして提供されます。

エージェントを対話形式で実行する場合、または使用可能なエージェントの メジャー バージョンが新しい場合は、エージェントを手動でアップグレードする必要がある場合があります。 これは、プロジェクト コレクションの [ エージェント プール ] タブから簡単に行うことができます。 パイプラインは、互換性のあるエージェントを対象とするまで実行されません。

エージェントのバージョンを表示するには、「エージェントの機能の構成」の説明に従って、エージェント プールに移動し、目的のエージェントの [機能] タブを選択します。

エージェントの更新をプログラムでトリガーするには、「特定のエージェント プールに対してエージェントの更新プログラムをプログラムでトリガーする方法」セクションの説明 に従って、エージェント更新 API を使用できます

注意

インターネットにアクセスできないサーバーの場合は、ローカル ファイルとして使用するためにエージェントの zip ファイルを C:\ProgramData\Microsoft\Azure DevOps\Agents\ 手動でコピーします。

よく寄せられる質問

操作方法最新の v2 エージェント バージョンがあることを確認してください。

  1. [ エージェント プール ] タブに移動します。

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

      Choose Organization settings.

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

      Choose Agent pools tab.

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

      Choose Collection settings.

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

      Choose Agent pools.

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

      Collection settings, 2019.

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

      Choose Agent pools, 2019.

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

      Choose Settings, Agent Queues, 2018.

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

      Choose Manage pools, 2018.

  2. エージェントを含むプールをクリックします。

  3. エージェントが有効になっていることを確認します。

  4. [機能] タブに移動します。

    1. [ エージェント プール ] タブで、目的のエージェント プールを選択します。

      From Agent pools, select the desired agent pool.

    2. [ エージェント] を選択し、目的のエージェントを選択します。

      Select Agents and choose the agent.

    3. [機能] タブ 選択します。

      Choose the Capabilities tab.

      注意

      Microsoft がホストするエージェントでは、システム機能は表示されません。 Microsoft ホステッド エージェントにインストールされているソフトウェアの一覧については、「Microsoft ホスト型 エージェントの使用」を参照してください。

    1. [ エージェント プール ] タブで、目的のプールを選択します。

      Select the desired pool.

    2. [ エージェント] を選択し、目的のエージェントを選択します。

      Select Agents and choose the desired agent.

    3. [機能] タブ 選択します。

      Agent capabilities tab.

    1. [ エージェント プール ] タブで、目的のプールを選択します。

      Select the desired tab, 2019.

    2. [ エージェント] を選択し、目的のエージェントを選択します。

      Choose the desired agent, 2019.

    3. [機能] タブ 選択します。

      Choose the Capabilities tab, 2019.

    目的のエージェントを選択し、[ 機能 ] タブを選択します。

    Agent capabilities tab, 2018.

  5. 機能を Agent.Version 探します。 この値は、公開されている最新のエージェント バージョンに対して確認できます。 「Azure Pipelines エージェント」を参照し、一覧表示されているバージョン番号が最も多いページを確認してください。

  6. 各エージェントは、新しいバージョンのエージェントを必要とするタスクを実行すると、自動的に更新されます。 一部のエージェントを手動で更新する場合は、プールを右クリックし、[ すべてのエージェントの更新] を選択します。

Azure DevOps Server プールの一部である v2 エージェントを更新できますか?

はい。 Azure DevOps Server 2019 以降では、ローカル ディスク上のエージェント パッケージ ファイルを検索するようにサーバーを構成できます。 この構成により、リリース時にサーバーに付属した既定のバージョンがオーバーライドされます。 このシナリオは、サーバーがインターネットにアクセスできない場合にも適用されます。

  1. インターネットにアクセスできるコンピューターから、Azure Pipelines エージェント GitHub リリース ページから最新バージョンのエージェント パッケージ ファイル (.zip または .tar.gz 形式) をダウンロードします。

  2. 選択した方法 (USB ドライブ、ネットワーク転送など) を使用して、ダウンロードしたパッケージ ファイルを各Azure DevOps Serverアプリケーション層に転送します。 エージェント ファイルをフォルダーの下に %ProgramData%\Microsoft\Azure DevOps\Agents 配置します。

  3. これで、すべての設定が完了しました。 エージェントが更新されるたびに、Azure DevOps Serverでローカル ファイルが使用されるようになります。 各エージェントは、新しいバージョンのエージェントを必要とするタスクを実行すると、自動的に更新されます。 ただし、一部のエージェントを手動で更新する場合は、プールを右クリックし、[ すべてのエージェントの更新] を選択します。

セルフホステッド エージェントには Microsoft ホステッド エージェントを超えるパフォーマンス上の利点がありますか?

多くの場合、あります。 具体的な内容は次のとおりです。

  • セルフホステッド エージェントを使用する場合は、インクリメンタル ビルドを実行できます。 たとえば、リポジトリをクリーンアップせず、クリーン ビルドを実行しないパイプラインを定義すると、通常、ビルドの実行速度が速くなります。 Microsoft ホスト型エージェントを使用する場合、ビルドまたはリリース パイプラインの完了後にエージェントが破棄されるため、これらの利点は得られません。

  • Microsoft ホステッド エージェントは、ビルドの開始により長い時間がかかることがあります。 ジョブが Microsoft ホステッド エージェントに割り当てられるまでに数秒かかることがよくありますが、システムの負荷によっては、エージェントが割り当てられるまでに数分かかる場合があります。

同じマシンに複数のセルフホステッド エージェントをインストールできますか?

はい。 この方法は、多くの共有リソースを消費しないジョブを実行するエージェントに適しています。 たとえば、作業の大部分がデプロイの調整であり、エージェント自体では多くの作業を行わないリリースを実行するエージェントには試してみることができます。

同じコンピューターで複数のエージェントを実行しても効率があまり向上しない場合もあります。 たとえば、ディスクと I/O リソースを多く消費するビルドを実行するエージェントには価値がない場合があります。

また、npm パッケージなど、並列ビルド ジョブで同じシングルトン ツールのデプロイが使用されている場合にも問題が発生する可能性があります。 たとえば、あるビルドが依存関係を更新しているときに、別のビルドがそれを使用している最中である場合は、信頼できない結果やエラーが発生する可能性があります。

パイプライン ジョブが取り消されたときのエージェントの動作は何ですか?

Microsoft でホストされるエージェントの場合、エージェントは破損し、Azure Pipelines プールに返されます。

セルフホステッド エージェントの場合:

パイプラインが取り消されると、エージェントは現在のステップを実行しているプロセスに一連のコマンドを送信します。 最初のコマンドは、タイムアウト 7.5 秒で送信されます。 プロセスが終了していない場合は、2.5 秒のタイムアウトで 2 番目のコマンドが送信されます。 プロセスが終了していない場合、エージェントはプロセスを強制終了するコマンドを発行します。 プロセスが 2 つの初期終了要求を受け入れない場合は、強制終了されます。 最初の要求から終了までに約 10 秒かかります。

プロセスに対して発行されるコマンドは、エージェント オペレーティング システムによって異なります。

  • macOS と Linux - 送信されるコマンドは SIGINT、SIGTERM、SIGKILL の後に続きます。
  • Windows - プロセスに送信されるコマンドは Ctrl + C、Ctrl + Break、Process.Kill の後に続きます。

特定のエージェント プールに対してプログラムでエージェントの更新をトリガーするにはどうすればよいですか?

次の API を使用して、プールのエージェント更新をトリガーできます。

POST https://dev.azure.com/{organization}/_apis/distributedtask/pools/{poolId}/messages?agentId={agentId}&api-version=6.0

URI パラメーター

名前 / 必須 種類 説明
agentId query False string 更新するエージェント。 指定しない場合は、すべてのエージェントに対して更新がトリガーされます。
organization path True string Azure DevOps 組織の名前です。
poolId path True integer int32 使用するエージェント プール
api-version query False string 使用する API のバージョン。 このバージョンの API を使用するには、これを '6.0' に設定する必要があります。

エージェントの更新をトリガーするには、要求本文が空である必要があります。

注意

Azure Pipelines エージェントはGitHubにオープンソース

詳細情報

エージェントの詳細については、Azure DevOpsラーニング パスを使用したビルド アプリケーションの次のモジュールを参照してください。