Von Microsoft gehostete Agents

Azure DevOps Services

Von Microsoft gehostete Agents sind nur mit in der Cloud gehosteten Azure DevOps Services verfügbar. Sie können von Microsoft gehostete Agents oder den Azure Pipelines-Agent-Pool nicht mit lokalem TFS oder Azure DevOps Server verwenden. Bei diesen lokalen Versionen müssen Sie selbstgehostete Agents verwenden.

Wichtig

Wählen Sie eine Version aus der Azure DevOps-Inhalts-Versionsauswahl aus.

Wählen Sie die Version dieses Artikels aus, die Ihrer Plattform und Version entspricht. Die Versionsauswahl befindet sich oberhalb des Inhaltsverzeichnisses. Suchen Sie Ihre Azure DevOps-Plattform und -Version.

Wenn Ihre Pipelines in Azure Pipelines gehostet werden, verfügen Sie über eine bequeme Option, Aufträge mithilfe eines von Microsoft gehosteten Agents auszuführen. Bei von Microsoft gehosteten Agents werden Wartung und Upgrades für Sie erledigt. Sie erhalten immer die neueste Version des VM-Images, das Sie in Ihrer Pipeline angeben. Bei jeder Ausführung einer Pipeline erhalten Sie für jeden Auftrag in der Pipeline einen neuen virtuellen Computer (VM). Die VM wird nach nur einem Auftrag verworfen (d. h. jede Änderung, die ein Auftrag am Dateisystem der VM vornimmt, wie z. B. das Auschecken von Code, ist beim nächsten Auftrag nicht mehr verfügbar). Von Microsoft gehostete Agents können Aufträge direkt auf der VM oder in einem Container ausführen.

Azure Pipelines stellt einen vordefinierten Agentpool namens Azure Pipelines mit von Microsoft gehosteten Agents zur Verfügung.

Für viele Teams ist dies die einfachste Art der Ausführung von Aufträgen. Sie können es zuerst ausprobieren und feststellen, ob es für Ihre Build- oder Bereitstellungsaufträge funktioniert. Andernfalls können Sie Skalierungssatz-Agents oder einen selbst gehosteten Agent verwenden.

Tipp

Sie können einen von Microsoft gehosteten Agent kostenlos ausprobieren.

Software

Der Azure Pipelines-Agent-Pool bietet mehrere VM-Images mit jeweils einer breiten Palette von Tools und Software zur Auswahl.

Image Agent-Spezifikation im klassischen Editor YAML-Bezeichnung des VM-Images Inbegriffene Software
Windows Server 2022 mit Visual Studio 2022 windows-2022 windows-latest ODERwindows-2022 Link
Windows Server 2019 mit Visual Studio 2019 windows-2019 windows-2019 Link
Ubuntu 22.04 ubuntu-22.04 ubuntu-latest ODERubuntu-22.04 Link
Ubuntu 20.04 ubuntu-20.04 ubuntu-20.04 Link
macOS 13 Ventura macOS-13 macOS-13 Link
macOS 12 Monterey macOS-12 macOS-latest ODERmacOS-12 Link
macOS 11 Big Sur (veraltet) macOS-11 macOS-11 Link

Das Standard-Agent-Image für klassische Buildpipelines ist windows-2019. Das Standard-Agent-Image für YAML-Buildpipelines ist ubuntu-latest. Weitere Informationen finden Sie unter Festlegen eines Pools in Ihrer Pipeline.

Sie können die installierte Software für jeden gehosteten Agent anzeigen, indem Sie in der Tabelle auf den Link Inbegriffene Software klicken. Bei macOS-Images können Sie manuell eine der Toolversionen auswählen. Weitere Informationen.

Neueste Updates

Kunden wird empfohlen, zu neueren Versionen oder einem selbstgehosteten Agent zu migrieren.

Weitere Informationen und Anweisungen zum Aktualisieren Ihrer Pipelines, die diese Images verwenden, finden Sie unter Entfernen älterer Images in gehosteten Azure Pipelines-Pools.

Hinweis

Die macOS-Kapazität ist derzeit begrenzt. Im Gegensatz zu Linux- und Windows-Images, bei denen unsere Kapazität durch die Gesamtkapazität von Azure begrenzt ist, wird die Kapazität von macOS durch die Menge an verfügbarer Hardware eingeschränkt. Während wir daran arbeiten, im Frühjahr 2024 zusätzliche Kapazitäten zur Verfügung zu stellen, kann es bei einigen Aufträgen zu Verzögerungen bei der Ausführung kommen. Kunden sollten nach Möglichkeit Linux- oder Windows-Images auswählen, etwa für Aufträge, mit denen keine Apps für das Apple-Ökosystem erstellt werden.

Hinweis

Der gehostete Azure Pipelines-Pool ersetzt die früheren gehosteten Pools, deren Namen den entsprechenden Images zugeordnet waren. Alle Aufträge in den vorherigen Hostpools werden automatisch zum richtigen Image im neuen von Azure Pipelines gehosteten Pool weitergeleitet. Möglicherweise werden noch die alten Poolnamen angezeigt, aber hinter den Kulissen werden die gehosteten Aufträge unter Verwendung des Azure Pipelines-Pools ausgeführt. Weitere Informationen zu diesem Update finden Sie in den Versionshinweisen zu Einzelner gehosteter Pool in den Versionshinweisen vom 1. Juli 2019 – Sprint 154.

Wichtig

Um die Installation zusätzlicher Software auf von Microsoft gehosteten Agents zu beantragen, erstellen Sie keine Feedbackanfrage zu diesem Dokument, und öffnen Sie auch kein Supportticket. Öffnen Sie stattdessen ein Issue in unserem Repository, in dem wir die Skripts zum Generieren verschiedener Images verwalten.

Bestimmen von Pipelines, die ein veraltetes gehostetes Image verwenden

Um Pipelines zu bestimmen, die ein veraltetes Image verwenden, navigieren Sie zum folgenden Speicherort in Ihrer Organisation: https://dev.azure.com/{organization}/{project}/_settings/agentqueues. Filtern Sie nach dem Namen des Images, das überprüft werden soll. Im folgenden Beispiel wird das Image vs2017-win2016 überprüft.

Screenshot des Filters von Pipelines anhand des Imagenamens.

Sie können den projektübergreifenden Auftragsverlauf für veraltete Images auch mit dem Skript hier abfragen, wie im folgenden Beispiel gezeigt.

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

Verwenden eines von Microsoft gehosteten Agents

Wenn Sie in YAML-Pipelines keinen Pool angeben, wird für Pipelines standardmäßig der Azure Pipelines-Agent-Pool verwendet. Sie müssen lediglich angeben, welches VM-Image Sie verwenden möchten.

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

Hinweis

Die Angabe eines Pools kann auf mehreren Ebenen in einer YAML-Datei erfolgen. Wenn Sie feststellen, dass Ihre Pipeline nicht mit dem erwarteten Image ausgeführt wird, stellen Sie sicher, dass Sie die Poolangabe auf Pipeline-, Phasen- und Auftragsebene überprüfen.

Vermeiden hartcodierter Verweise

Wenn Sie einen von Microsoft gehosteten Agent verwenden, verweisen Sie stets mithilfe von Variablen auf die Buildumgebung und Agent-Ressourcen. Vermeiden Sie das Hartcodieren des Laufwerksbuchstabens oder des Ordners mit dem Repository. Das genaue Layout der gehosteten Agents kann ohne Warnung geändert werden.

Hardware

Von Microsoft gehostete Agents, die Windows- und Linux-Images ausführen, werden auf universellen Azure-VMs mit einer CPU mit 2 Kernen, 7 GB RAM und 14 GB Speicherplatz auf SSD-Datenträgern bereitgestellt. Diese virtuellen Computer befinden sich in derselben Region wie Ihre Azure DevOps-Organisation.

Agents, die macOS-Images ausführen, werden auf Mac Pros mit einer CPU mit 3 Kernen, 14 GB RAM und 14 GB Speicherplatz auf SSD-Datenträgern bereitgestellt. Diese Agents werden stets in den USA unabhängig vom Standort Ihrer Azure DevOps-Organisation ausgeführt. Wenn Ihnen Datenhoheit wichtig ist und sich Ihre Organisation nicht in den USA befindet, sollten Sie keine macOS-Images verwenden. Weitere Informationen

Für alle diese Computer steht mindestens 10 GB freier Speicherplatz für die Ausführung Ihrer Pipelines zur Verfügung. Dieser freie Speicherplatz wird beansprucht, wenn Ihre Pipeline Quellcode auscheckt, Pakete herunterlädt, Docker-Images abruft oder Zwischendateien generiert.

Wichtig

Anfragen zur Erhöhung des Speicherplatzes für von Microsoft gehosteten Agents oder zur Bereitstellung leistungsstärkerer Computer können nicht berücksichtigt werden. Wenn die Spezifikationen der von Microsoft gehosteten Agents nicht Ihren Anforderungen entsprechen, sollten Sie selbstgehostete Agents oder Skalierungsgruppen-Agents in Betracht ziehen.

Netzwerk

Bei einigen Einrichtungen müssen Sie möglicherweise den Bereich der IP-Adressen kennen, in dem Agents bereitgestellt werden. Wenn Sie z. B. den gehosteten Agents Zugriff durch eine Firewall gewähren müssen, können Sie diesen Zugriff nach IP-Adresse einschränken. Da Azure DevOps das globale Azure-Netzwerk nutzt, variieren IP-Adressbereiche im Laufe der Zeit. Microsoft veröffentlicht wöchentlich eine JSON-Datei mit nach Region aufgeschlüsselten IP-Adressbereichen für Azure-Rechenzentren. Diese Datei wird wöchentlich mit neuen geplanten IP-Adressbereichen aktualisiert. Nur die neueste Version der Datei ist zum Download verfügbar. Wenn Sie frühere Versionen benötigen, müssen Sie sie jede Woche herunterladen und archivieren, sobald sie verfügbar sind. Die neuen IP-Adressbereiche werden in der folgenden Woche aktiv. Wir empfehlen Ihnen, die Liste regelmäßig zu überprüfen (mindestens einmal pro Woche), um sicherzustellen, dass sie stets auf dem neuesten Stand ist. Wenn Agent-Aufträge fehlschlagen, besteht ein erster Schritt zur Problembehandlung darin sicherzustellen, dass Ihre Konfiguration mit der aktuellen Liste der IP-Adressen übereinstimmt. Die IP-Adressbereiche für die gehosteten Agents sind in der wöchentlichen Datei unter AzureCloud.<region> aufgeführt, z. B. AzureCloud.westus für die Region USA, Westen.

Ihre gehosteten Agents werden im gleichen geografischen Azure-Raum wie Ihre Organisation ausgeführt. Jeder geografische Raum umfasst eine oder mehrere Regionen. Ihr Agent kann zwar in derselben Region wie Ihre Organisation ausgeführt werden, dies ist jedoch nicht garantiert. Um die vollständige Liste der möglichen IP-Adressbereiche für Ihren Agent abzurufen, müssen Sie die IP-Adressbereiche aus allen Regionen in Ihrem geografischen Raum verwenden. Wenn sich Ihre Organisation beispielsweise im geografischen Raum USA befindet, müssen Sie die IP-Adressbereiche für alle Regionen in diesem geografischen Raum verwenden.

Um Ihren geografischen Raum zu bestimmen, navigieren Sie zu https://dev.azure.com/<your_organization>/_settings/organizationOverview. In der Tabelle mit den geografischen Azure-Räumen können Sie Ihre Region und den dazugehörigen geografischen Raum bestimmen. Verwenden Sie danach die IP-Adressbereiche in der wöchentlichen Datei für alle Regionen in diesem geografischen Raum.

Wichtig

Sie können von Microsoft gehostete Agents nicht über private Verbindungen wie ExpressRoute oder VPN mit Ihrem Unternehmensnetzwerk verbinden. Der Datenverkehr zwischen von Microsoft gehosteten Agents und Ihren Servern erfolgt über ein öffentliches Netzwerk.

So bestimmen Sie die möglichen IP-Adressbereiche für von Microsoft gehostete Agents

  1. Bestimmen Sie in den Organisationseinstellungen die Region Ihrer Organisation.
  2. Bestimmen Sie den geografischen Azure-Raum der Region Ihrer Organisation.
  3. Ordnen Sie die Namen der Regionen in Ihrem geografischen Raum dem Format der wöchentlichen Datei zu. Folgen Sie dabei dem Format von AzureCloud.<region>, wie z. B. AzureCloud.westus. Sie können die Namen der Regionen in der Liste mit den geografischen Azure-Räumen dem Format der wöchentlichen Datei zuordnen, indem Sie die Regionsnamen überprüfen, die aus den Azure-Verwaltungsbibliotheken für .NET an den Konstruktor der Regionen übergeben werden, die im Quellcode für die Region-Klasse definiert sind.

    Hinweis

    Da es in den Azure-Verwaltungsbibliotheken für .NET keine API zum Auflisten der Regionen eines geografischen Raums gibt, müssen Sie sie, wie im folgenden Beispiel gezeigt, manuell auflisten.

  4. Rufen Sie die IP-Adressen für alle Regionen in Ihrem geografischen Raum aus der wöchentlichen Datei ab. Wenn Ihre Region Brasilien, Süden oder Europa, Westen ist, müssen Sie zusätzliche IP-Adressbereiche basierend auf Ihrer Fallbackgeografie einschließen, wie im folgenden Hinweis beschrieben.

Hinweis

Aufgrund von Kapazitätsbeschränkungen kann es bei einigen Organisationen in den Regionen Brasilien, Süden oder Europa, Westen vorkommen, dass sich die gehosteten Agents außerhalb des erwarteten Standorts befinden. In diesen Fällen müssen zusätzlich zu den IP-Adressbereichen für alle Regionen in Ihrem geografischen Raum, wie im vorigen Abschnitt beschrieben, weitere IP-Adressbereiche für die Regionen im geografischen Raum mit Fallbackkapazität aufgenommen werden.

Wenn sich Ihre Organisation in der Region Brasilien, Süden befindet, ist USA Ihr geografischen Raum mit Fallbackkapazität.

Wenn sich Ihre Organisation in der Region Europa, Westen befindet, ist Frankreich Ihr geografischen Raum mit Fallbackkapazität.

Unsere IP-Adressbereiche für Mac sind in den obigen Azure-IP-Adressen nicht enthalten, da sie in der macOS-Cloud von GitHub gehostet werden. IP-Adressbereiche können mithilfe der GitHub-Metadaten-API anhand der hier angegebenen Anweisungen abgerufen werden.

Beispiel

Im folgenden Beispiel werden die IP-Adressbereiche des gehosteten Agents für eine Organisation in der Region „USA, Westen“ aus der wöchentlichen Datei abgerufen. Da sich die Region „USA, Westen“ im geografischen Raum „USA“ befindet, sind die IP-Adressen für alle Regionen darin enthalten. In diesem Beispiel werden die IP-Adressen in die Konsole geschrieben.

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);
                }
            }
        }
    }
}

Diensttags

Von Microsoft gehostete Agents können nicht anhand von Diensttags aufgelistet werden. Wenn Sie versuchen, gehosteten Agents Zugriff auf Ihre Ressourcen zu gewähren, müssen Sie die IP-Adressbereiche der Positivliste hinzufügen.

Sicherheit

Von Microsoft gehostete Agents werden auf der sicheren Azure-Plattform ausgeführt. Sie müssen allerdings die folgenden Sicherheitsaspekte beachten.

  • Obwohl von Microsoft gehostete Agents im öffentlichen Azure-Netzwerk ausgeführt werden, werden ihnen keine öffentlichen IP-Adressen zugewiesen. Daher können externe Entitäten keine von Microsoft gehosteten Agents als Ziel wählen.
  • Von Microsoft gehostete Agents werden auf einzelnen VMs ausgeführt, für die nach jeder Ausführung ein Reimaging durchgeführt wird. Jeder Agent ist für eine einzelne Organisation reserviert, und jede VM hostet nur einen Agent.
  • Aus Sicht der Sicherheit bietet die Ausführung Ihrer Pipeline auf von Microsoft gehosteten Agenten mehrere Vorteile. Wenn Sie nicht vertrauenswürdigen Code in Ihrer Pipeline ausführen, z. B. Beiträge von Forks, ist es sicherer, die Pipeline auf von Microsoft gehosteten Agents auszuführen als auf selbstgehosteten Agents in Ihrem Unternehmensnetzwerk.
  • Wenn eine Pipeline hinter einer Firewall auf Ihre Unternehmensressourcen zugreifen muss, müssen Sie den IP-Adressbereich für den geografischen Azure-Raum zulassen. Da der IP-Adressbereich ziemlich groß ist und die Computer in diesem Bereich auch anderen Kunden gehören können, kann dies zu einem erhöhten Risiko führen. Die beste Möglichkeit, dies zu verhindern, besteht darin, den Zugriff auf interne Ressourcen zu unterbinden. Informationen zum Bereitstellen von Artefakten auf einer Gruppe von Servern finden Sie in der Kommunikation zur Bereitstellung auf Zielservern.
  • Gehostete Images entsprechen nicht den CIS-Benchmarks für Härtung. Um solche Images verwenden zu können, müssen Sie entweder selbstgehostete oder Skalierungsgruppen-Agents erstellen.

Funktionen und Einschränkungen

Von Microsoft gehostete Agents:

  • Verfügen über die oben genannte Software. Sie können Software auch während des Build- oder Releasevorgangs mithilfe von Aufgaben im Toolinstallationsprogramm hinzufügen.
    • Sie erhalten für jeden Auftrag in Ihrer Pipeline einen Agent mit neu erstelltem Image.
  • Stellen für Ihre Quell- und Buildausgaben 10 GB Speicherplatz bereit.
  • Bieten einen Free-Tarif:
    • Öffentliches Projekt: 10 kostenlose von Microsoft gehostete Parallelaufträge, die jeweils bis zu 360 Minuten (6 Stunden) ohne allgemeine zeitliche Begrenzung pro Monat ausgeführt werden können. Wenden Sie sich an uns, wenn Sie Ihre Grenzwerte über den Free-Tarif hinaus erhöhen möchten.
    • Privates Projekt: Ein kostenloser Parallelauftrag, der pro Monat jedes Mal bis zu 60 Minuten ausgeführt werden kann, bis 1.800 Minuten (30 Stunden) ausgeschöpft sind. Sie können zusätzliche Kapazitäten pro Parallelauftrag erwerben. Erworbene Parallelaufträge entfernen das monatliche Zeitlimit und ermöglichen es Ihnen, jeden Auftrag für bis zu 360 Minuten (6 Stunden) auszuführen. Von Microsoft gehostete Parallelaufträge kaufen.
    • Wenn Sie eine neue Azure DevOps-Organisation erstellen, erhalten Sie diese kostenlosen Zuweisungen standardmäßig nicht. Um die kostenlose Zuweisung für öffentliche oder private Projekte zu beantragen, senden Sie eine Anfrage.
  • Werden in Microsoft Azure auf universellen VMs des Typs Standard_DS2_v2 ausgeführt.
  • Werden unter Windows als Administrator und unter Linux als Sudo-Benutzer ohne Kennwort ausgeführt.
  • (Nur Linux) Führen Schritte in einer cgroup aus, die 6 GB physischen Arbeitsspeicher und 13 GB Arbeitsspeicher insgesamt bietet.
  • Verwenden Sie VM-Images, die regelmäßig aktualisiert werden (alle 3 Wochen).

Von Microsoft gehostete Agents bieten Folgendes nicht:

  • Die Möglichkeit, eine Remoteverbindung herzustellen.
  • Die Möglichkeit, Artefakte auf einer UNC-Dateifreigabe abzulegen.
  • Die Möglichkeit, Computer direkt in Ihr Unternehmensnetzwerk einzubinden.
  • Die Möglichkeit, größere oder leistungsfähigere Buildcomputer zu erhalten.
  • Die Möglichkeit, vorab geladene benutzerdefinierte Software auszuführen. Sie können Software während einer Pipelineausführung installieren, z. B. über Aufgaben im Toolinstallationsprogramm oder ein Skript.
  • Potenzielle Leistungsvorteile, die Sie ggf. durch selbstgehostete Agents erhalten, die Builds möglicherweise schneller starten und ausführen. Weitere Informationen
  • Die Möglichkeit, XAML-Builds auszuführen.
  • Die Möglichkeit, ein Rollback auf eine vorherige VM-Imageversion auszuführen. Sie verwenden immer die neueste Version.

Wenn von Microsoft gehostete Agents nicht Ihre Anforderungen erfüllen, können Sie eigene selbstgehostete Agents bereitstellen oder Skalierungsgruppen-Agents einsetzen.

Häufig gestellte Fragen

Wie kann ich erkennen, welche Software in einem Image enthalten ist?

Sie können die installierte Software für jeden gehosteten Agent anzeigen, indem Sie in der Tabelle Software auf den Link Inbegriffene Software klicken.

Hinweis

Standardmäßig verwendet der Windows-Agent die Git-Version im Lieferumfang der Agent-Software. Microsoft empfiehlt, die im Lieferumfang des Agents enthaltene Git-Version zu verwenden. Sie haben jedoch verschiedene Möglichkeiten, dieses Standardverhalten außer Kraft zu setzen und die Git-Version zu verwenden, die im Pfad auf dem Agentcomputer installiert ist.

  • Legen Sie eine Pipelinevariable mit dem Namen System.PreferGitFromPath in Ihren Pipelines auf true fest.
  • Auf selbstgehosteten Agents können Sie eine ENV-Datei im Stammverzeichnis des Agents erstellen und der Datei die Zeile System.PreferGitFromPath=true hinzufügen. Weitere Informationen finden Sie unter Wie lege ich verschiedene Umgebungsvariablen für jeden einzelnen Agent fest?.

Um die von einer Pipeline verwendete Git-Version zu ermitteln, können Sie sich die Protokolle für einen checkout-Schritt in Ihrer Pipeline ansehen, wie im folgenden Beispiel gezeigt.

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

Wie wählt Microsoft die Software und Versionen aus, die dem Image hinzugefügt werden sollen?

Weitere Informationen zu den in den Images enthaltenen Softwareversionen finden Sie unter Leitlinien zum Installationsumfang.

Wann werden die Images aktualisiert?

Images werden in der Regel wöchentlich aktualisiert. Sie können die Statusbadges überprüfen, die im Format 20200113.x vorliegen, bei dem der erste Teil das Datum angibt, an dem das Image aktualisiert wurde.

Was kann ich tun, wenn von mir benötigte Software entfernt oder durch eine neuere Version ersetzt wird?

Sie können uns dies mitteilen, indem Sie ein GitHub-Issue einreichen. Wählen Sie dazu in der Tabelle Verwenden eines von Microsoft gehosteten Agents die Links Inbegriffene Software aus.

Sie können auch einen selbstgehosteten Agent verwenden, der exakt die benötigten Softwareversionen enthält. Weitere Informationen finden Sie unter Selbstgehostete Agents.

Was geschieht, wenn ich einen größeren Computer mit mehr Verarbeitungsleistung, Arbeitsspeicher oder Speicherplatz benötige?

Wir können den Arbeitsspeicher, die Verarbeitungsleistung oder den Speicherplatz für von Microsoft gehostete Agents nicht erhöhen. Sie können aber selbstgehostete Agents oder Skalierungsgruppen-Agents nutzen, die auf Computern mit Ihren gewünschten Spezifikationen gehostet werden.

Ich kann von Microsoft gehosteten Agent nicht auswählen und meinen Build bzw. meine Bereitstellung nicht in die Warteschlange stellen. Wie sollte ich vorgehen?

Von Microsoft gehostete Agents sind nur in Azure Pipelines und nicht in TFS oder Azure DevOps Server verfügbar.

Standardmäßig haben alle Mitwirkenden an einem Projekt in einer Organisation Zugriff auf die von Microsoft gehosteten Agents. Ihr Organisationsadministrator kann jedoch den Zugriff von Microsoft gehosteter Agents auf ausgewählte Benutzer oder Projekte begrenzen. Bitten Sie den Besitzer Ihrer Azure DevOps-Organisation, Ihnen die Berechtigung zur Nutzung eines von Microsoft gehosteten Agents zu erteilen. Weitere Informationen finden Sie unter Sicherheit des Agent-Pools.

Die Fertigstellung meiner Pipelines, die auf von Microsoft gehosteten Agents ausgeführt werden, nimmt mehr Zeit in Anspruch. Wie kann ich sie beschleunigen?

Wenn Ihre Pipeline in letzter Zeit langsamer geworden ist, suchen Sie auf der Statusseite nach Ausfällen. Möglicherweise haben wir Probleme mit unserem Dienst. Oder überprüfen Sie alle Änderungen, die Sie im Anwendungscode oder in der Pipeline vorgenommen haben. Möglicherweise ist Ihr Repository während des Auscheckens größer geworden. Vielleicht laden Sie laden größere Artefakte hoch, oder Sie führen möglicherweise weitere Tests aus.

Wenn Sie nur eine Pipeline einrichten und die Leistung der von Microsoft gehosteten Agents mit Ihrem lokalen Computer oder einem selbstgehosteten Agent vergleichen, beachten Sie die Spezifikationen der Hardware, die wir zum Ausführen Ihrer Aufträge verwenden. Wir sind nicht in der Lage, Ihnen größere oder leistungsfähige Computer zur Verfügung zu stellen. Sie können die Verwendung von selbstgehosteten Agents oder Skalierungsgruppen-Agents in Betracht ziehen, wenn diese Leistung nicht akzeptabel ist.

Ich benötige mehr Agents. Was kann ich tun?

Alle Azure DevOps-Organisationen erhalten für Open-Source-Projekte mehrere kostenlose Parallelaufträge sowie einen kostenlosen Parallelauftrag und monatlich eine begrenzte Anzahl von Minuten für private Projekte. Wenn Sie für Ihr Open-Source-Projekt zusätzliche Minuten oder Parallelaufträge benötigen, wenden Sie sich an den Support. Wenn Sie für Ihr privates Projekt zusätzliche Minuten oder Parallelaufträge benötigen, können Sie diese kaufen.

Meine Pipeline funktioniert mit selbstgehosteten Agents, schlägt aber bei von Microsoft gehosteten Agents fehl. Wie sollte ich vorgehen?

Auf Ihrem selbstgehosteten Agent sind wahrscheinlich alle Abhängigkeiten richtig installiert, während auf den von Microsoft gehosteten Agents die gleichen Abhängigkeiten, Tools und Software nicht installiert sind. Überprüfen Sie zunächst sorgfältig die Liste der Software, die auf von Microsoft gehosteten Agents installiert ist, indem Sie dem Link Inbegriffene Software in der obigen Tabelle folgen. Vergleichen Sie diese dann mit der auf Ihrem selbstgehosteten Agent installierten Software. In einigen Fällen verfügen von Microsoft gehostete Agents möglicherweise über die Tools, die Sie benötigen (z. B. Visual Studio), aber möglicherweise wurden nicht alle erforderlichen optionalen Komponenten installiert. Wenn Sie Unterschiede feststellen, haben Sie zwei Möglichkeiten:

  • Sie können ein neues Issue im Repository erstellen, in dem wir Anfragen für zusätzliche Software nachverfolgen. Sich an den Support zu wenden, hilft Ihnen nicht, neue Software auf von Microsoft gehosteten Agents einzurichten.

  • Sie können selbstgehostete Agents oder Skalierungsgruppen-Agents verwenden. Bei diesen Agents haben Sie die vollständige Kontrolle über die Images zum Ausführen Ihrer Pipelines.

Mein Build ist auf meinem lokalen Computer erfolgreich, schlägt jedoch auf von Microsoft gehosteten Agents fehl. Wie sollte ich vorgehen?

Auf Ihrem lokalen Computer sind wahrscheinlich alle Abhängigkeiten richtig installiert, während auf den von Microsoft gehosteten Agents die gleichen Abhängigkeiten, Tools und Software nicht installiert sind. Überprüfen Sie zunächst sorgfältig die Liste der Software, die auf von Microsoft gehosteten Agents installiert ist, indem Sie dem Link Inbegriffene Software in der obigen Tabelle folgen. Vergleichen Sie diese dann mit der auf Ihrem lokalen Computer installierten Software. In einigen Fällen verfügen von Microsoft gehostete Agents möglicherweise über die Tools, die Sie benötigen (z. B. Visual Studio), aber ggf. wurden nicht alle erforderlichen optionalen Komponenten installiert. Wenn Sie Unterschiede feststellen, haben Sie zwei Möglichkeiten:

  • Sie können ein neues Issue im Repository erstellen, in dem wir Anfragen für zusätzliche Software nachverfolgen. Dies ist der beste Weg, neue Software zu installieren. Die Kontaktaufnahme mit dem Support hilft Ihnen nicht bei der Einrichtung neuer Software auf von Microsoft gehosteten Agents.

  • Sie können selbstgehostete Agents oder Skalierungsgruppen-Agents verwenden. Bei diesen Agents haben Sie die vollständige Kontrolle über die Images zum Ausführen Ihrer Pipelines.

Meine Pipeline schlägt mit der folgenden Fehlermeldung fehl: Kein Speicherplatz mehr auf dem Gerät.

Von Microsoft gehostete Agents haben nur 10 GB Speicherplatz auf dem Datenträger für die Ausführung Ihres Auftrags zur Verfügung. Dieser Speicherplatz wird genutzt, wenn Sie Quellcode auschecken, Pakete oder Docker-Images herunterladen oder Zwischendateien generieren. Leider können wir den für von Microsoft gehostete Agents verfügbaren kostenlosen Speicherplatz nicht erhöhen. Sie können Ihre Pipeline für diesen Speicherplatz passend umstrukturieren. Oder Sie können selbstgehostete Agents oder Skalierungsgruppen-Agents in Betracht ziehen.

Meine auf von Microsoft gehosteten Agents ausgeführte Pipeline benötigt Zugriff auf Server in unserem Unternehmensnetzwerk. Wie erhalten wir eine Liste der IP-Adressen, die in unserer Firewall zugelassen werden sollen?

Weitere Informationen finden Sie im Abschnitt Netzwerk zu IP-Adressbereichen von Agents.

Unsere auf von Microsoft gehosteten Agents ausgeführte Pipeline kann den Namen eines Servers in unserem Unternehmensnetzwerk nicht auflösen. Wie kann dieses Problem behoben werden?

Wenn Sie auf den Server über dessen DNS-Namen verweisen, stellen Sie sicher, dass Ihr Server im Internet über seinen DNS-Namen öffentlich zugänglich ist. Wenn Sie auf Ihren Server über dessen IP-Adresse verweisen, stellen Sie sicher, dass die IP-Adresse im Internet öffentlich zugänglich ist. Stellen Sie in beiden Fällen sicher, dass alle Firewalls zwischen den Agents und Ihrem Unternehmensnetzwerk die IP-Adressbereiche der Agents zulassen.

Ich erhalte in einem Azure Storage-Konto einen SAS-IP-Autorisierungsfehler

Wenn Sie einen SAS-Fehlercode erhalten, liegt dies höchstwahrscheinlich daran, dass die IP-Adressbereiche der von Microsoft gehosteten Agents aufgrund Ihrer Azure Storage-Regeln nicht zulässig sind. Es gibt verschiedene Problemumgehungen:

  1. Ändern Sie die IP-Netzwerkregeln für Ihr Azure Storage-Konto, indem Sie die IP-Adressbereiche Ihrer gehosteten Agents hinzufügen.
  2. Verwenden Sie in Ihrer Pipeline die Azure CLI zum Aktualisieren des Netzwerkregelsatzes für Ihr Azure Storage-Konto, ehe Sie auf Speicher zugreifen, und stellen Sie anschließend den vorherigen Regelsatz wieder her.
  3. Verwenden Sie selbstgehostete Agents oder Skalierungsgruppen-Agents.

Wie kann ich Versionen von Tools im gehosteten macOS-Agent manuell auswählen?

Xamarin

Der gehostete macOS-Agent speichert Xamarin SDK-Versionen und die zugehörigen Mono-Versionen als eine Gruppe von Symlinks zu Xamarin SDK-Speicherorten, die einem einzelnen Symlink-Paket zur Verfügung stehen.

Um eine Xamarin SDK-Version manuell auszuwählen, die auf dem gehosteten macOS-Agent verwendet werden soll, führen Sie den folgenden Bash-Befehl vor Ihrer Xamarin-Buildaufgabe als Teil Ihres Builds aus. Geben Sie dabei den Symlink zum benötigten Xamarin-Versionspaket an.

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

Die Liste aller verfügbaren Xamarin SDK-Versionen und Symlinks finden Sie in der Dokumentation zu Agents:

Mit diesem Befehl wird keine über das Xamarin SDK hinaus gehende Mono-Version ausgewählt. Informationen zum manuellen Auswählen einer Mono-Version finden Sie in den folgenden Anweisungen.

Falls Sie eine nicht standardmäßige Version von Xcode zum Erstellen von Builds für Ihre Xamarin.iOS- oder Xamarin.Mac-Apps verwenden, müssen Sie zusätzlich die folgende Befehlszeile ausführen:

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

Dabei gilt: $(xcodeRoot) = /Applications/Xcode_13.2.app

Xcode-Versionen im gehosteten macOS-Agent-Pool finden Sie für den macos-11-Agent hier und für den macos-12-Agent hier.

Xcode

Wenn Sie die in Azure Pipelines und TFS enthaltenen Xcode-Aufgabe verwenden, können Sie in den Eigenschaften dieser Aufgabe eine Version von Xcode auswählen. Andernfalls können Sie die Xcode-Version, die im gehosteten macOS-Agent-Pool verwendet werden soll, ehe Ihre xcodebuild-Buildaufgabe ausgeführt wird, manuell festlegen. Führen Sie diese Befehlszeile als Teil Ihres Builds aus, und ersetzen Sie dabei nach Bedarf die Xcode-Versionsnummer 13.2:

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

Xcode-Versionen im gehosteten macOS-Agent-Pool finden Sie für den macos-11-Agent hier und für den macos-12-Agent hier.

Dieser Befehl funktioniert nicht für Xamarin-Apps. Informationen zum manuellen Auswählen einer Xcode-Version zum Erstellen von Builds für Xamarin-Apps finden Sie in den obigen Anweisungen.

Mono

Um eine Mono-Version für den gehosteten macOS-Agent-Pool manuell auszuwählen, führen Sie dieses Skript in jedem Auftrag Ihres Builds aus, ehe Sie die Mono-Buildaufgabe ausführen. Geben Sie dabei den Symlink mit der gewünschten Mono-Version an (eine Liste aller verfügbaren Symlinks finden Sie im Abschnitt Xamarin weiter oben):

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"