Azure Pipelines エージェント

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

注意

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 または Team Foundation Server (TFS) では、自己ホスト型エージェントを使用できます。 自己ホスト型エージェントを使用すると、ビルドと展開に必要な依存ソフトウェアをより詳細にインストールできます。 また、マシンレベルのキャッシュと構成は実行から継続されるため、速度が向上します。

注意

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

ヒント

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

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

エージェントは、Linux、macOS、または Windows マシンにインストールできます。 自己ホスト型エージェントのインストールの詳細については、以下を参照してください。

注意

MacOS では、の実行時に、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つの並列ジョブを含むすべての組織に、既定で free レベルのサービスを提供しています。 実行する必要のある同時実行パイプラインの数によっては、複数の Microsoft ホストまたは自己ホスト型エージェントを同時に使用するために、さらに多くの並列ジョブが必要になる場合があります。 並列ジョブとさまざまな free レベルのサービスの詳細については、「 Azure Pipelines での並列ジョブ」を参照してください。

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

重要

Azure DevOps Server 2019 以降では、自己ホスト型の同時実行ジョブに対して、リリースで料金を支払う必要はありません。 自分が所有しているエージェントの数によってのみ制限されます。

機能

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

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

注意

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

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

注意

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

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

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

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

    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を選択します。

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

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

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

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

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

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

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

      注意

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    [エージェントの機能] タブ (2015) を選択します。

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

ヒント

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

コミュニケーション

Azure Pipelines との通信

TFS との通信

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

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

Azure DevOps Services のエージェント トポロジ。

エージェントとエージェントまたは TFS の間の一般的なAzure Pipelinesを次に示します。

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

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

  3. ジョブが完了すると、エージェントはジョブ固有の OAuth トークンを破棄し、リスナー OAuth トークンを使用して新しいジョブ要求が発生した場合の確認に戻されます。

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

エージェントと TFS の間の一般的な通信パターンを次に示します。

  • エージェント プール管理者がエージェント プールにエージェントを参加し、サービス アカウント (Windows の場合) または保存されたユーザー名とパスワード (Linux および macOS の場合) の資格情報が TFS との通信を開始するために使用されます。 エージェントは、これらの資格情報を使用してジョブ キューをリッスンします。

  • エージェントは、サーバーとの通信中に非対称キー暗号化を使用しません。 ただし、HTTPS を 使用して、エージェントと TFS 間の通信をセキュリティで保護することができます。

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

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

注意

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

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

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

認証

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

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

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

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

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

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

統合

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

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

  1. TFS を実行しているマシンにサインインします。

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

IIS TFS ウィンドウ認証

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

ネゴシエート

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

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

  1. TFS を実行しているマシンにログオンします。

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

IIS TFS ウィンドウ認証

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

代替

Connect認証を使用して TFS に接続します。 この方法を使用するには、まず TFS で HTTPS を構成する必要があります

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

  1. TFS を実行しているマシンにサインインします。

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

対話型とサービス

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

  1. サービスとしての。 オペレーティングシステムの service manager を利用して、エージェントのライフサイクルを管理できます。 また、エージェントをサービスとして実行すると、エージェントの自動アップグレードのエクスペリエンスが向上します。

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

    注意

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

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

エージェントアカウント

エージェントをサービスとして実行するか、対話形式で実行するかにかかわらず、エージェントの実行に使用するコンピューターアカウントを選択できます。 (これは、エージェントを Azure Pipelines または TFS に登録するときに使用する資格情報とは異なることに注意してください)。エージェントアカウントの選択は、ビルドおよび配置ジョブで実行されているタスクのニーズにのみ依存します。

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

Windows では、Network service や Local service などのサービスアカウントの使用を検討する必要があります。 これらのアカウントにはアクセス許可が制限されており、パスワードは期限切れになりません。つまり、エージェントの管理に時間がかかります。

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

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

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

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

自己ホスト型エージェントを更新するには

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

    Project 設定、エージェントプール

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

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

    [ エージェント更新] を クリックして、エージェントを個別に更新することもできます。

    エージェントの更新

  3. 更新プログラムを確認するには、[ 更新 ] を選択します。

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

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

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

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

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

エージェントのバージョンを表示するには、エージェント プール に移動し、目的のエージェントの [ 機能 ] タブを選択します。詳細については、「 エージェントの機能の構成」を参照してください。

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

注意

インターネットにアクセスできない場合は、エージェントの 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 年) を選択します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      注意

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    [エージェントの機能] タブ (2015) を選択します。

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

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

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

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

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

  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番目のコマンドが、タイムアウトが2.5 秒で送信されます。 プロセスが終了していない場合、エージェントはプロセスを強制終了するコマンドを発行します。 プロセスが2つの初期終了要求を受け入れない場合は、強制終了されます。 最初の要求から終了までには約10秒かかります。

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

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

エージェントの更新プログラムを特定のエージェントプールに対してプログラムでトリガーする方法はありますか

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

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

URI パラメーター

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

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

注意

Azure Pipelinesエージェントは、 のオープンソースGitHub。

詳細情報

エージェントの詳細については、「Build applications with Azure DevOpsラーニング パス」のモジュールを参照してください。