Azure Pipelines エージェント

Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018

Note

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)) でセルフホステッド エージェントを使用できます。 セルフホステッド エージェントを使用すると、ビルドとデプロイに必要な依存ソフトウェアのインストールをより細かく制御できます。 また、マシン レベルのキャッシュと構成は実行から実行まで保持されるため、速度が向上する可能性があります。

Note

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

ヒント

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

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

Note

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

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

Note

エージェントは広く下位互換性があります。 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 以降では、リリースでセルフホステッド同時実行ジョブの料金を支払う必要はありません。 使用しているエージェントの数によってのみ制限されます。

機能

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

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

Note

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

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

Note

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

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

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

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

    1. Azure DevOps組織の設定を選択します。

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

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

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

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

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

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

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

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

      コレクション設定、2019。

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

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

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

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

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

      [プールの管理] (2018) を選択します。

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

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

      エージェント プールから、目的のエージェント プールを選択します。

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

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

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

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

      Note

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

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

      目的のプールを選択します。

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

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

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

      [エージェントの機能] タブ。

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

      目的のタブ (2019) を選択します。

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

      目的のエージェント (2019) を選択します。

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

      [機能] タブ (2019) を選択します。

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

    [エージェントの機能] タブ(2018 年)。

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

ヒント

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

通信

Azure Pipelines との通信

TFS との通信

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

オンプレミスのインストールでのエージェント トポロジ。

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 で実行されているサーバーに接続されています。

Note

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

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

オンプレミス環境のエージェント接続

認証

エージェントを登録するには、エージェント プールの 管理者ロール のメンバーである必要があります。 エージェント プール管理者の 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 に接続します。

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

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

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

IIS TFS Windows 認証

NTLM プロバイダーを使用した IIS TFS Windows 認証

ネゴシエート

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

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

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

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

IIS TFS Windows 認証

ネゴシエートプロバイダーと ntlm プロバイダーを使用した IIS TFS Windows 認証

代替

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

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

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

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

対話型とサービス

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

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

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

    Note

    自動ログオンを有効にしたり、スクリーン セーバーを無効にしたりすると、他のユーザーがコンピューターにアクセスし、自動的にログオンするアカウントを使用できるため、セキュリティ上のリスクがあります。 エージェントをこのように構成する場合は、そのコンピューターが物理的に保護されている (たとえば、セキュリティで保護された施設に配置されている) ことを確認する必要があります。 リモート デスクトップを使用してエージェントが自動ログオンで実行されているコンピューターにアクセスする場合は、リモート デスクトップを閉じるだけでコンピューターがロックされ、このエージェントで実行されるすべての 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. プロジェクト設定エージェント プールに移動します。

    プロジェクト設定、エージェント プール

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

    すべてのエージェントを更新する

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

    エージェントの更新

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

    すべてのエージェントの更新の確認

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

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

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

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

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

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

Note

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

よく寄せられる質問

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

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

    1. Azure DevOps組織の設定を選択します。

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

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

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

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

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

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

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

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

      コレクション設定、2019 年。

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

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

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

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

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

      [プールの管理] (2018 年) を選択します。

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

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

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

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

      エージェント プールから、目的のエージェント プールを選択します。

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

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

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

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

      Note

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

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

      目的のプールを選択します。

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

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

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

      [エージェントの機能] タブ。

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

      目的のタブ (2019 年) を選択します。

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

      目的のエージェント (2019) を選択します。

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

      [機能] タブ (2019 年) を選択します。

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

    [エージェントの機能] タブ(2018 年)。

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

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

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

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

  1. インターネットにアクセスできるコンピューターから、 Azure Pipelines Agent 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 パラメーター

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

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

Note

Azure Pipelines エージェントは GitHub でオープンソースされています。

詳細情報

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