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

Azure DevOps Services

Microsoft ホステッド エージェントは、クラウドでホストされている Azure DevOps Services でのみ使用できます。 Microsoft ホステッド エージェントまたは Azure Pipelines エージェント プールは、オンプレミスの TFS または Azure DevOps Server では使用できません。 これらのオンプレミス バージョンでは、セルフホステッド エージェントを使う必要があります。

重要

Select a version from Azure DevOps Content Version selector.

お使いのプラットフォームとバージョンに対応するこの記事のバージョンを選択します。 バージョン セレクターは目次の上にあります。 Azure DevOps のプラットフォームとバージョンを検索します

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

Azure Pipelines には、Azure Pipelines という名前の事前定義されたエージェント プールと、Microsoft ホステッド エージェントが用意されています。

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

ヒント

Microsoft ホステッド エージェントは無料で試すことができます。

ソフトウェア

Azure Pipelines エージェント プールには選択できる複数の仮想マシン イメージが用意されており、それぞれに広範なツールとソフトウェアが含まれます。

Image クラシック エディター エージェントの指定 YAML VM イメージ ラベル 含まれるソフトウェア
Visual Studio 2022 を含む Windows Server 2022 windows-2022 windows-latest または windows-2022 リンク
Visual Studio 2019 を含む Windows Server 2019 windows-2019 windows-2019 リンク
Ubuntu 22.04 ubuntu-22.04 ubuntu-latest または ubuntu-22.04 リンク
Ubuntu 20.04 ubuntu-20.04 ubuntu-20.04 リンク
macOS 13 Ventura macOS-13 macOS-13 リンク
macOS 12 Monterey macOS-12 macOS-latest または macOS-12 リンク
macOS 11 Big Sur macOS-11 macOS-11 リンク

クラシック ビルド パイプラインの既定のエージェント イメージは windows-2019 で、YAML ビルド パイプラインの既定のエージェント イメージは ubuntu-latest です。 詳しくは、「パイプライン内のプールを指定する」をご覧ください。

表の「含まれるソフトウェア」のリンクを選ぶと、各ホステッド エージェントにインストールされているソフトウェアを確認できます。 macOS イメージを使っている場合は、ツールのバージョンから手動で選択できます。 詳細については、こちらを参照してください。

最新の更新

お客様には、新しいバージョンまたはセルフホステッド エージェントに移行することをお勧めします。

それらのイメージを使用するパイプラインを更新する方法の詳細と手順については、「Azure Pipelines ホステッド プールの古いイメージを削除する」をご覧ください。

注意

Azure Pipelines でホストされるプールにより、対応するイメージにマップされた名前を持つ以前のホストされたプールが置き換えられます。 以前のホストされたプールに保有していたジョブはすべて、新しい Azure Pipelines でホストされるプール内の正しいイメージに自動的にリダイレクトされます。 状況によっては、古いプール名が引き続き表示されることがありますが、バックグラウンドでは、ホステッド ジョブは Azure Pipelines プールを使って実行されます。 この更新について詳しくは、2019 年 7 月 1 日 Sprint 154 リリース ノートの「単一のホストされたプール」のリリース ノートをご覧ください。

重要

Microsoft ホステッド エージェントにインストールされるソフトウェアの追加を要求するには、このドキュメントでフィードバック要求を作成したり、サポート チケットを開いたりしないでください。 代わりに、さまざまなイメージを生成するためのスクリプトが管理されているこちらのリポジトリで issue を開いてください。

非推奨のホステッド イメージを使用しているパイプラインを確認する方法

非推奨のイメージを使っているパイプラインを確認するには、組織で https://dev.azure.com/{organization}/{project}/_settings/agentqueues を参照し、イメージ名でフィルター処理して調べます。 次の例では、vs2017-win2016 イメージを調べています。

Screenshot of filtering pipelines by image name.

次の例で示すように、こちらにあるスクリプトを使って、複数のプロジェクトを対象にジョブ履歴で非推奨のイメージを照会することもできます。

./QueryJobHistoryForRetiredImages.ps1 -accountUrl https://dev.azure.com/{org} -pat {pat}

Microsoft ホステッド エージェントを使用する

YAML パイプラインでは、プールを指定しないと、パイプラインは既定で Azure Pipelines エージェント プールを使用します。 使用する仮想マシン イメージを指定するだけでかまいません。

jobs:
- job: Linux
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - script: echo hello from Linux
- job: macOS
  pool:
    vmImage: 'macOS-latest'
  steps:
  - script: echo hello from macOS
- job: Windows
  pool:
    vmImage: 'windows-latest'
  steps:
  - script: echo hello from Windows

注意

YAML ファイルでは、複数のレベルでプールを指定できます。 パイプラインが想定したイメージで実行されていないことに気付いた場合は、パイプライン、ステージ、ジョブのレベルでプールの指定を確認してください。

ハードコーディングされた参照を使わない

Microsoft ホステッド エージェントを使うときは、常に、変数を使ってビルド環境とエージェント リソースを参照します。 たとえば、リポジトリを含むドライブ文字やフォルダーをハードコーディングしないでください。 ホステッド エージェントトの正確なレイアウトは、警告なしに変更される可能性があります。

ハードウェア

Windows と Linux のイメージを実行する Microsoft ホステッド エージェントは、2 コアの CPU、7 GB の RAM、14 GB の SSD ディスク領域を備えた Azure 汎用仮想マシンにプロビジョニングされます。 これらの仮想マシンは、Azure DevOps 組織と同じ地理的な場所に併置されます。

macOS イメージを実行するエージェントは、3 コアの CPU、14 GB の RAM、14 GB の SSD ディスク領域を備えた Mac Pro にプロビジョニングされます。 これらのエージェントは、Azure DevOps 組織の場所に関係なく、常に米国で実行されます。 データ主権が重要であり、組織が米国にない場合は、macOS イメージを使わないでください。 詳細については、こちらを参照してください

これらのマシンはすべて、少なくとも 10 GB の空きディスク領域を備えており、パイプラインの実行に使用できます。 この空き領域は、パイプラインによるソース コードのチェックアウト、パッケージのダウンロード、Docker イメージのプル、中間ファイルの生成に使われます。

重要

Microsoft ホステッド エージェントでのディスク領域の増量や、より強力なマシンのプロビジョニングに対する要求には、お応えできません。 Microsoft ホステッド エージェントの仕様がニーズを満たしていない場合は、セルフホステッド エージェントまたはスケール セット エージェントを検討する必要があります。

ネットワーク

一部のセットアップでは、エージェントがデプロイされる IP アドレスの範囲を把握することが必要になる場合があります。 たとえば、ホステッド エージェントにファイアウォール経由のアクセスを許可する必要がある場合は、そのアクセスを IP アドレスで制限できます。 Azure DevOps は Azure グローバル ネットワークを使っているため、IP 範囲は時間が経つと変わります。 Microsoft は、リージョン別に Azure データセンターの IP 範囲の一覧を示す JSON ファイルを毎週公開しています。 このファイルは、新しい計画された IP 範囲で毎週更新されます。 ダウンロードできるのは最新バージョンのファイルのみです。 以前のバージョンが必要な場合、毎週、利用可能になったときにダウンロードしてアーカイブする必要があります。 新しい IP 範囲は、次の週に有効になります。 常に最新のリストを維持するため、頻繁に (少なくとも毎週 1 回) 戻ってチェックすることをお勧めします。 エージェント ジョブが失敗し始めた場合、重要な最初のトラブルシューティング手順は、お使いの構成が最新の IP アドレスの一覧と一致していることを確認することです。 ホステッド エージェントの IP アドレス範囲は、AzureCloud.<region> にある週単位のファイルに一覧表示されています (たとえば、米国西部リージョンの場合は AzureCloud.westus)。

ホステッド エージェントは、組織と同じ Azure の地域で実行されます。 各地域には、1 つ以上のリージョンが含まれます。 エージェントは組織と同じリージョンで実行されることもありますが、その保証はありません。 エージェントで可能性のある IP 範囲の完全な一覧を取得するには、地域に含まれるすべてのリージョンの IP 範囲を使用する必要があります。 たとえば、組織が米国地域にある場合は、その地域のすべてのリージョンの IP 範囲を使う必要があります。

ご自分の地域を確認するには、https://dev.azure.com/<your_organization>/_settings/organizationOverview に移動し、自分のリージョンを取得して、「Azure の地域」のテーブルから関連付けられている地域を見つけます。 自分の地域がわかったら、その地域のすべてのリージョンに対する週単位のファイルの IP 範囲を使用します。

重要

ExpressRoute や VPN などのプライベート接続を使って、Microsoft ホステッド エージェントを企業ネットワークに接続することはできません。 Microsoft ホステッド エージェントとサーバー間のトラフィックは、パブリック ネットワークを経由します。

Microsoft ホステッド エージェントで使用可能な IP 範囲を特定するには

  1. [組織の設定] で、組織のリージョンを特定します。
  2. 組織のリージョンに対する Azure の地域を特定します。
  3. 地域内のリージョンの名前を、AzureCloud.<region> の形式に従って、週単位のファイルで使用される形式にマップします (AzureCloud.westus など)。 Azure 地域リストのリージョンの名前を週単位のファイルで使用される形式にマップするには、.NET 用 Azure 管理ライブラリから、Region クラスのソース コードで定義されているリージョンのコンストラクターに渡されるリージョン名を確認します。

    注意

    .NET 用 Azure 管理ライブラリには地域に対するリージョンを一覧表示する API がないため、次の例に示すように、それらを手動で一覧表示する必要があります。

  4. 週単位のファイルから、地域内のすべてのリージョンの IP アドレスを取得します。 リージョンがブラジル南部または西ヨーロッパの場合は、次の注意で説明するように、フォールバック地域に基づいて追加の IP 範囲を含める必要があります。

注意

容量の制限により、ブラジル南部または西ヨーロッパ リージョンの一部の組織では、想定される地域の外部にあるホステッド エージェントが表示されることがあります。 このような場合は、前のセクションで説明したように、地域内のすべてのリージョンの IP 範囲を含めるだけでなく、容量フォールバック地域のリージョンに対する追加の IP 範囲を含める必要があります。

組織がブラジル南部リージョンにある場合、容量フォールバック地域は米国です。

組織が西ヨーロッパ リージョンにある場合、容量フォールバック地域はフランスです。

Microsoft の Mac IP 範囲は、GitHub の macOS クラウドでホストされているため、上記の Azure IP には含まれていません。 IP 範囲は、こちらに記載されている手順に従って、GitHub メタデータ API を使って取得できます。

次の例では、米国西部リージョンの組織に対するホステッド エージェントの IP アドレス範囲が、週単位のファイルから取得されます。 米国西部リージョンは米国地域であるため、米国地域のすべてのリージョンの IP アドレスが含まれます。 この例では、IP アドレスはコンソールに表示されます。

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

namespace WeeklyFileIPRanges
{
    class Program
    {
        // Path to the locally saved weekly file
        const string weeklyFilePath = @"C:\MyPath\ServiceTags_Public_20230904.json";

        static void Main(string[] args)
        {
            // United States geography has the following regions:
            // Central US, East US, East US 2, East US 3, North Central US, 
            // South Central US, West Central US, West US, West US 2, West US 3
            // This list is accurate as of 9/8/2023
            List<string> USGeographyRegions = new List<string>
            {
                "centralus",
                "eastus",
                "eastus2",
                "eastus3",
                "northcentralus",
                "southcentralus",
                "westcentralus",
                "westus",
                "westus2",
                "westus3"
            };

            // Load the weekly file
            JObject weeklyFile = JObject.Parse(File.ReadAllText(weeklyFilePath));
            JArray values = (JArray)weeklyFile["values"];

            foreach (string region in USGeographyRegions)
            {
                string tag = $"AzureCloud.{region}";
                Console.WriteLine(tag);

                var ipList =
                    from v in values
                    where tag.Equals((string)v["name"], StringComparison.OrdinalIgnoreCase)
                    select v["properties"]["addressPrefixes"];

                foreach (var ip in ipList.Children())
                {
                    Console.WriteLine(ip);
                }
            }
        }
    }
}

サービス タグ

Microsoft ホステッド エージェントをサービス タグで一覧表示することはできません。 ホステッド エージェントにリソースへのアクセスを許可しようとする場合は、IP 範囲の許可リストの方法に従う必要があります。

セキュリティ

Microsoft ホステッド エージェントは、セキュリティ保護された Azure プラットフォームで実行されます。 ただし、次のセキュリティに関する考慮事項に注意する必要があります。

  • Microsoft ホステッド エージェントは Azure パブリック ネットワーク上で実行されますが、パブリック IP アドレスは割り当てられません。 そのため、外部エンティティは Microsoft ホステッド エージェントをターゲットにできません。
  • Microsoft ホステッド エージェントは個々の VM で実行され、各実行後に再イメージ化されます。 各エージェントは 1 つの組織に専用であり、各 VM では 1 つのエージェントだけがホストされます。
  • Microsoft ホステッド エージェントでパイプラインを実行すると、セキュリティの観点からいくつかの利点があります。 フォークからのコントリビューションなど、パイプラインで信頼されていないコードを実行する場合は、企業ネットワークに存在するセルフホステッド エージェントより、Microsoft ホステッド エージェントでパイプラインを実行する方が安全です。
  • パイプラインでファイアウォールの内側にある企業リソースにアクセスする必要がある場合は、Azure 地域の IP アドレス範囲を許可する必要があります。 IP アドレスの範囲はかなり大きく、この範囲のマシンは他の顧客にも属している可能性があるため、これにより露出が増加する可能性があります。 これを防ぐ最善の方法は、内部リソースにアクセスする必要がないようにすることです。 一連のサーバーに成果物をデプロイする方法については、「ターゲット サーバーにデプロイするための通信」を参照してください。
  • ホステッド イメージは、CIS のセキュリティ強化ベンチマークに準拠していません。 CIS でセキュリティ強化されたイメージを使うには、セルフホステッド エージェントまたはスケール セット エージェントを作成する必要があります。

機能と制限

Microsoft ホステッド エージェントは:

  • 上記のソフトウェアを持っています。 ビルドまたはリリースの間に、ツール インストーラー タスクを使って、ソフトウェアを追加することもできます。
    • パイプライン内の各ジョブ用に、新しくイメージ化されたエージェントが提供されます。
  • ソースとビルドの出力用に、10 GB のストレージを提供します。
  • Free レベルを提供します。
    • パブリック プロジェクト: 月あたりの全体的な制限時間なしで、毎回最大 360 分 (6 時間) 実行できる、10 個の無料の Microsoft ホステッド並列ジョブ。 Free レベルの制限の引き上げについては、お問い合わせください
    • プライベート プロジェクト: 1 か月あたり 1,800 分 (30 時間) を使い切るまで、1 回あたり最大 60 分実行できる 1 つの無料並列ジョブ。 並列ジョブごとに追加容量に対して料金を支払うことができます。 有料の並列ジョブの場合、月単位の時間制限がなくなり、各ジョブを最大 360 分 (6 時間) 実行できるようになります。 Microsoft ホステッド並列ジョブを購入する
    • 新しい Azure DevOps 組織を作成するときは、これらの無料の許可は既定では提供されません。 パブリックまたはプライベート プロジェクトに対する無料の許可を要求するには、要求をお送りください。
  • Microsoft Azure 汎用仮想マシン Standard_DS2_v2 で実行します。
  • Windows では管理者として実行し、Linux ではパスワードレス sudo ユーザーとして実行します。
  • (Linux のみ) 6 GB の物理メモリと 13 GB の合計メモリを提供する cgroup でステップを実行します。
  • 定期的に (3 週間ごとに) 更新される VM イメージを使用します。

Microsoft ホステッド エージェントでは、次のものは提供されません。

  • リモート接続する機能。
  • UNC ファイル共有に成果物をドロップする機能。
  • マシンを企業ネットワークに直接参加させる機能。
  • より大きい、またはより強力なビルド マシンを取得する機能。
  • カスタム ソフトウェアを事前に読み込む機能。 パイプラインの実行中に、ツール インストーラー タスクやスクリプトなどを使って、ソフトウェアをインストールできます。
  • セルフホステッド エージェントを使用することで得られ、ビルドの開始と実行が速くなる可能性がある、潜在的なパフォーマンス上の利点。 詳細情報
  • XAML ビルドを実行する機能。
  • 以前のバージョンの VM イメージにロールバックする機能。 常に最新のバージョンを使用します。

Microsoft ホステッド エージェントがニーズを満たさない場合は、独自のセルフホステッド エージェントをデプロイするか、スケール セット エージェントを使用できます。

よく寄せられる質問

イメージに含まれているソフトウェアを確認するにはどうすればよいですか?

ソフトウェア」の表の「含まれるソフトウェア」のリンクを選ぶと、各ホステッド エージェントにインストールされているソフトウェアを確認できます。

注意

既定では、エージェント ソフトウェアにバンドルされている Git のバージョンが Windows エージェントで使われます。 Microsoft は、エージェントにバンドルされている Git のバージョンを使うことをお勧めしますが、この既定の動作をオーバーライドし、エージェント コンピューターのパスにインストールされている Git のバージョンを使うためのオプションがいくつかあります。

  • パイプラインで System.PreferGitFromPath という名前のパイプライン変数を true に設定します。
  • セルフホステッド エージェントでは、エージェントのルート ディレクトリに .env という名前のファイルを作成し、そのファイルに System.PreferGitFromPath=true という行を追加できます。 詳しくは、「エージェントごとに異なる環境変数を設定するにはどうすればよいですか?」をご覧ください。

パイプラインで使われている Git のバージョンは、次の例で示すように、パイプラインのログの checkout ステップで確認できます。

Syncing repository: PathFilter (Git)
Prepending Path environment variable with directory containing 'git.exe'.
git version
git version 2.26.2.windows.1

Microsoft は、イメージに入れるソフトウェアとバージョンをどのように選択しますか?

イメージに含まれるソフトウェアのバージョンについて詳しくは、インストールされるものについてのガイドラインに関するページをご覧ください。

イメージはいつ更新されますか?

通常、イメージは毎週更新されます。 ステータス バッジをチェックできます。これは、20200113.x という形式になっており、最初の部分がイメージの更新日を示しています。

必要なソフトウェアが削除されたり、新しいバージョンに置き換えられたりした場合は、どうすればよいですか?

Microsoft ホステッド エージェントを使用する」の表の「含まれるソフトウェア」のリンクを選び、GitHub の issue を提出してお知らせください。

ユーザーが必要とするソフトウェアの正確なバージョンが含まれるセルフホステッド エージェントを使うこともできます。 詳しくは、「セルフホステッド エージェント」をご覧ください。

より多くの処理能力、メモリ、またはディスク領域を備えた、より大きなマシンが必要な場合はどうすればよいですか?

Microsoft ホステッド エージェントのメモリ、処理能力、ディスク領域を増やすことはできませんが、必要な仕様を備えたマシンでホストされたセルフホステッド エージェントまたはスケール セット エージェントを使用できます。

Microsoft ホステッド エージェントを選択できず、ビルドまたはデプロイをキューに入れることができません。 どうすればよいですか。

Microsoft ホステッド エージェントは Azure Pipelines でのみ使用でき、TFS または Azure DevOps Server では使用できません。

既定では、組織のすべてのプロジェクト共同作成者が、Microsoft ホステッド エージェントにアクセスできます。 ただし、組織の管理者が、Microsoft ホステッド エージェントへのアクセスを、一部のユーザーまたはプロジェクトに制限している可能性があります。 Azure DevOps 組織の所有者に、Microsoft ホステッド エージェントを使うためのアクセス許可の付与を依頼してください。 「エージェント プールのセキュリティ」をご覧ください。

Microsoft ホステッド プール エージェント上で実行されるパイプラインが完了するまでは、さらに時間がかかります。 それをスピードアップするにはどうすればよいですか?

ご利用のパイプラインが最近遅くなった場合は、所定の状態ページで停止が発生していないか確認してください。 サービスに問題が発生している可能性があります。 または、ご利用のアプリケーション コードまたはパイプライン内で行った変更内容を確認してください。 チェックアウト中のリポジトリ サイズが増加したか、より大きなアーティファクトをアップロードしているか、より多くのテストを実行している可能性があります。

パイプラインを設定したばかりであり、Microsoft ホステッド エージェントのパフォーマンスをご利用のローカル マシンまたはセルフホステッド エージェントと比較する場合は、ご自分のジョブの実行に使用されるハードウェアの仕様に注意してください。 より大型または強力なマシンをご提供することはできません。 このパフォーマンスが許容できない場合は、セルフホステッド エージェントまたはスケール セット エージェントの使用を検討してください。

もっと多くのエージェントが必要です。 どうすればよいですか?

すべての Azure DevOps 組織には、オープンソース プロジェクト用にいくつかの無料並列ジョブと、プライベート プロジェクト用に 1 つの無料並列ジョブと月あたりの制限がある分数が提供されています。 オープンソース プロジェクト用に追加の分数または並列ジョブが必要な場合は、サポートにお問い合わせください。 プライベート プロジェクト用に追加の分数または並列ジョブが必要な場合は、さらに購入することができます。

パイプラインがセルフホステッド エージェントでは成功しますが、Microsoft ホステッド エージェントでは失敗します。 どうすればよいですか。

セルフホステッド エージェントには適切な依存関係がすべてインストールされているのに対し、同じ依存関係、ツール、ソフトウェアが Microsoft ホステッド エージェントにはインストールされていない可能性があります。 まず、上の表の「含まれるソフトウェア」のリンクに従って、Microsoft ホステッド エージェントにインストールされているソフトウェア の一覧をよく確認してください。 次に、それをセルフホステッド エージェントにインストールされているソフトウェアと比較します。 場合によっては、必要なツール (Visual Studio など) が Microsoft ホステッド エージェントにあっても、必要なすべてのオプション コンポーネントがインストールされていない可能性があります。 違いが見つかったら、次の 2 つのオプションがあります。

  • リポジトリで新しい issue を作成できます。ここでは、追加ソフトウェアの要求が追跡されています。 Microsoft ホステッド エージェントでの新しいソフトウェアのセットアップについては、サポートにお問い合わせいただいてもお役に立てません。

  • セルフホステッド エージェントまたはスケール セット エージェントを使用できます。 これらのエージェントでは、パイプラインの実行に使われるイメージを、ユーザーが完全に制御できます。

ビルドがローカル コンピューターでは成功しますが、Microsoft ホステッド エージェントでは失敗します。 どうすればよいですか。

ローカル コンピューターには適切な依存関係がすべてインストールされているのに対し、同じ依存関係、ツール、ソフトウェアが Microsoft ホステッド エージェントにはインストールされていない可能性があります。 まず、上の表の「含まれるソフトウェア」のリンクに従って、Microsoft ホステッド エージェントにインストールされているソフトウェア の一覧をよく確認してください。 次に、それをローカル コンピューターにインストールされているソフトウェアと比較します。 場合によっては、必要なツール (Visual Studio など) が Microsoft ホステッド エージェントにあっても、必要なすべてのオプション コンポーネントがインストールされていない可能性があります。 違いが見つかったら、次の 2 つのオプションがあります。

  • リポジトリで新しい issue を作成できます。ここでは、追加ソフトウェアの要求が追跡されています。 これは、新しいソフトウェアをインストールするための最善の策です。 Microsoft ホステッド エージェントでの新しいソフトウェアのセットアップについては、サポートに問い合わせても役に立ちません。

  • セルフホステッド エージェントまたはスケール セット エージェントを使用できます。 これらのエージェントでは、パイプラインの実行に使われるイメージを、ユーザーが完全に制御できます。

"デバイスに空き領域がありません" というエラーでパイプラインが失敗します。

Microsoft によってホストされるエージェントには、ジョブの実行に使用できるディスク領域が 10 GB しかありません。 この領域は、ソース コードをチェックするとき、パッケージをダウンロードするとき、Docker イメージをダウンロードするとき、または中間ファイルを生成するときに使われます。 残念ですが、Microsoft ホステッド イメージで使用できる空き領域を増やすことはできません。 パイプラインを再構築して、この領域に収まるようにすることができます。 または、セルフホステッド エージェントまたはスケール セット エージェントの使用を検討できます。

Microsoft ホステッド エージェントで実行されているパイプラインは、会社のネットワーク上のサーバーにアクセスする必要があります。 ファイアウォールで許可する IP アドレスの一覧を取得するにはどうすればよいですか?

エージェントの IP 範囲に関するセクションをご覧ください

Microsoft ホステッド エージェントで実行されているパイプラインが、会社のネットワーク上のサーバーの名前を解決できません。 解決するにはどうすればよいですか?

サーバーを DNS 名で参照している場合は、その DNS 名を使ってサーバーにインターネット上でパブリックにアクセスできることを確認します。 サーバーを IP アドレスで参照している場合は、その IP アドレスにインターネット上でパブリックにアクセスできることを確認します。 どちらの場合も、エージェントと企業ネットワークの間にあるファイアウォールで、エージェントの IP 範囲が許可されていることを確認します。

Azure ストレージ アカウントから SAS IP 承認エラーが発生します

SAS エラー コードが表示される場合は、通常、Azure Storage の規則により、Microsoft ホステッド エージェントからの IP アドレス範囲が許可されていないためです。 いくつかの回避策があります。

  1. Azure ストレージ アカウントの IP ネットワーク規則を管理し、ホステッド エージェントの IP アドレス範囲を追加します。
  2. パイプラインのストレージにアクセスする直前で、Azure CLI を使用して Azure ストレージ アカウントのネットワーク ルールセットを更新し、その後で前のルールセットに戻します。
  3. セルフホステッド エージェントまたはスケール セット エージェントを使います。

ホステッド macOS エージェント上でツールのバージョンを手動で選ぶにはどうすればよいですか?

Xamarin

ホステッド macOS エージェントでは、Xamarin SDK のバージョンと関連する Mono バージョンが、シンボリック リンクのセットとして、1 つのバンドル シンボリック リンクで使用できる Xamarin SDK の場所に格納されます。

ホステッド macOS エージェントで使用する Xamarin SDK のバージョンを手動で選ぶには、ビルドの一部として次の bash コマンドを Xamarin ビルド タスクの前で実行し、必要な Xamarin バージョン バンドルへのシンボリック リンクを指定します。

/bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh <symlink>"

使用できるすべての Xamarin SDK のバージョンとシンボリック リンクの一覧は、エージェントのドキュメントにあります。

このコマンドでは、Xamarin SDK に含まれない Mono のバージョンは選ばれません。 Mono のバージョンを手動で選ぶには、以下の手順を参照してください。

Xamarin.iOS または Xamarin.Mac アプリのビルドに既定以外のバージョンの Xcode を使っている場合は、さらに次のコマンド ラインを実行する必要があります。

/bin/bash -c "echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'$(xcodeRoot);sudo xcode-select --switch $(xcodeRoot)/Contents/Developer"

ここで、$(xcodeRoot) = /Applications/Xcode_13.2.app

ホステッド macOS エージェント プールでの Xcode のバージョンは、 エージェントの場合はこちらmacos-11 エージェントの場合はこちらmacos-12で見つかります。

Xcode

Azure Pipelines と TFS に含まれる Xcode タスクを使う場合は、そのタスクのプロパティで Xcode のバージョンを選択できます。 そうでない場合に、ホステッド macOS エージェント プールで使う Xcode のバージョンを手動で設定するには、xcodebuild ビルド タスクの前で、ビルドの一部として次のコマンド ラインを実行します。必要に応じて、Xcode のバージョン番号 13.2 を置き換えます。

/bin/bash -c "sudo xcode-select -s /Applications/Xcode_13.2.app/Contents/Developer"

ホステッド macOS エージェント プールでの Xcode のバージョンは、 エージェントの場合はこちらmacos-11 エージェントの場合はこちらmacos-12で見つかります。

このコマンドは、Xamarin アプリでは機能しません。 Xamarin アプリをビルドするための Xcode のバージョンを手動で選ぶには、上記の手順を参照してください。

Mono

ホステッド macOS エージェント プールで使う Mono のバージョンを手動で選ぶには、Mono ビルド タスクの前のビルドの各ジョブで次のスクリプトを実行し、必要な Mono のバージョンのシンボリック リンクを指定します (使用可能なすべてのシンボリック リンクの一覧は、上記の Xamarin セクションにあります)。

SYMLINK=<symlink>
MONOPREFIX=/Library/Frameworks/Mono.framework/Versions/$SYMLINK
echo "##vso[task.setvariable variable=DYLD_FALLBACK_LIBRARY_PATH;]$MONOPREFIX/lib:/lib:/usr/lib:$DYLD_LIBRARY_FALLBACK_PATH"
echo "##vso[task.setvariable variable=PKG_CONFIG_PATH;]$MONOPREFIX/lib/pkgconfig:$MONOPREFIX/share/pkgconfig:$PKG_CONFIG_PATH"
echo "##vso[task.setvariable variable=PATH;]$MONOPREFIX/bin:$PATH"