Azure Pipelines-Agents

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Um Ihren Code zu erstellen oder Ihre Software mit Azure Pipelines bereitzustellen, benötigen Sie mindestens einen Agent. Wenn Sie mehr Code und Personen hinzufügen, werden Sie letztendlich mehr benötigen.

Wenn Ihre Pipeline ausgeführt wird, startet das System einen oder mehrere Aufträge. Ein Agent ist die Computinginfrastruktur mit installierter Agentsoftware, die Aufträge einzeln ausführt.

Azure Pipelines stellt verschiedene Agent-Typen bereit.

Agent-Typ Beschreibung Verfügbarkeit
Von Microsoft gehostete Agents Von Microsoft gehostete und verwaltete Agents Azure DevOps Services
Selbstgehostete Agents Von Ihnen konfigurierte und verwaltete Agents, die auf Ihren VMs gehostet werden Azure DevOps Services, Azure DevOps Server
Agents für Azure-VM-Skalierungsgruppen Eine Form von selbstgehosteten Agents, die mithilfe von Azure Virtual Machine Scale Sets automatisch anforderungsgerecht skaliert werden können Azure DevOps Services

Aufträge können direkt auf dem Hostcomputer des Agents oder in einem Container ausgeführt werden.

Von Microsoft gehostete Agents

Wenn Ihre Pipelines in Azure Pipelines gehostet sind, 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.

Erfahren Sie mehr über von Microsoft gehostete Agents.

Selbstgehostete Agents

Ein Agent, den Sie selbst einrichten und verwalten, um Aufträge auszuführen, ist ein selbstgehosteter Agent. Sie können selbst gehostete Agents in Azure Pipelines oder Azure DevOps Server, früher Team Foundation Server (TFS) genannt, verwenden. Selbstgehostete Agents bieten Ihnen mehr Kontrolle über die Installation abhängiger Software, die für Ihre Builds und Bereitstellungen erforderlich ist. Außerdem bleiben Caches und Konfigurationen auf Computerebene zwischen den Ausführungen erhalten, was die Geschwindigkeit erhöhen kann.

Hinweis

Obwohl mehrere Agents pro Computer installiert werden können, empfehlen wir dringend, nur einen Agent pro Computer zu installieren. Die Installation von zwei oder mehr Agents könnte sich negativ auf die Leistung und das Ergebnis Ihrer Pipelines auswirken.

Tipp

Bevor Sie einen selbstgehosteten Agent installieren, sollten Sie überprüfen, ob ein von Microsoft gehosteter Agentpool für Sie in Frage kommt. In vielen Fällen ist dies zum Einstieg der einfachste Weg. Probieren Sie es aus.

Sie können den Agent auf Linux-, macOS- oder Windows-Computern installieren. Sie können einen Agent auch in einem Docker-Container installieren. Weitere Informationen zum Installieren eines selbstgehosteter Agents finden Sie unter:

Hinweis

Unter macOS müssen Sie das spezielle Attribut im Downloadarchiv löschen, um zu verhindern, dass der Gatekeeper-Schutz für jede Assembly in der TAR-Datei angezeigt wird, wenn ./config.sh ausgeführt wird. Der folgende Befehl löscht das erweiterte Attribut für die Datei:

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

Nachdem Sie den Agent auf einem Computer installiert haben, können Sie jede andere Software auf diesem Computer installieren, die für Ihre Aufträge erforderlich ist.

Hinweis

Agents sind weitestgehend abwärtskompatibel. Jede Version des Agents sollte mit jeder Azure DevOps-Version kompatibel sein, solange Azure DevOps keine höhere Version des Agents anfordert.

Wir unterstützen nur die neueste Version des Agents, da dies die einzige Version ist, die garantiert alle aktuellen Patches und Fehlerbehebungen enthält.

Knotenrunnerversionen

Der Agent wird mit mehreren Versionen von NodeJS-Bibliotheken ausgeliefert, um Zielaufgaben zu unterstützen, die unterschiedliche Knotenhandler verwenden.

Alle offiziellen Azure DevOps-Aufgaben verwenden Node 10 als universellen Handler. Kunden verwenden jedoch möglicherweise weiterhin benutzerdefinierte Aufgaben, die die veraltete Node 6-Bibliothek verwenden. Node befindet sich derzeit im EOL-Status (End-Of-Life). Für die Unterstützung der Abwärtskompatibilität mit der Plattform werden die folgenden Self-Service-Methoden bereitgestellt, um den angegebenen Knotenrunner manuell zu installieren.

  • Installieren Sie den Node 6-Runner manuell. Weitere Informationen zum manuellen Installieren des Node 6-Runners finden Sie unter Node 6-Support.

  • Verwenden Sie die Aufgabe NodeTaskRunnerInstaller@0 in Ihren Pipelines, für die die veraltete Node 6-Bibliothek erforderlich ist.

  • Installieren Sie ein Agent-Paket, das Node 6 enthält.

    Azure Pipelines stellt zwei Versionen von Agent-Paketen bereit.

    • vsts-agent-*-Pakete unterstützen Node 6.
    • pipelines-agent-*-Pakete unterstützen Node 6 nicht. Diese Version des Pakets wird in Zukunft zum Standard-Agent-Paket.

    Wenn Sie wissen, dass Sie keine Aufgaben mit Node 6-Abhängigkeit verwenden, und wenn Sie Node 6 nicht auf Ihren Agent-Computern installieren möchten, können Sie den Agent aus dem Abschnitt Alternate Agent Downloads auf https://github.com/microsoft/azure-pipelines-agent/releases installieren.

Agents für Azure-VM-Skalierungsgruppen

Agents für Azure-VM-Skalierungsgruppen sind eine Form von selbstgehosteten Agents, die automatisch skaliert werden können, um Ihre Anforderungen zu erfüllen. Diese Flexibilität verringert die Notwendigkeit, jederzeit dedizierte Agents auszuführen. Im Gegensatz zu von Microsoft gehosteten Agents können Sie Größe und Image von Computern, auf denen Agents ausgeführt werden, flexibel bestimmen.

Sie legen eine VM-Skalierungsgruppe, eine bestimmte Anzahl von Agents, die im Standbymodus gehalten werden sollen, sowie eine maximale Anzahl virtueller Computer in der Skalierungsgruppe fest, und Azure Pipelines verwaltet die Skalierung Ihrer Agents für Sie.

Weitere Informationen finden Sie unter Azure Virtual Machine Scale Sets-Agents.

Parallelaufträge

Parallelaufträge repräsentieren die Anzahl von Aufträgen, die Sie in Ihrer Organisation gleichzeitig ausführen können. Wenn Ihre Organisation über einen einzigen Parallelauftrag verfügt, können Sie in Ihrer Organisation jeweils nur einen Auftrag ausführen. Alle weiteren gleichzeitigen Aufträge werden in die Warteschlange eingereiht, bis der erste Auftrag abgeschlossen ist. Um zwei Aufträge gleichzeitig auszuführen, benötigen Sie zwei Parallelaufträge. In Azure-Pipelines können Sie Parallelaufträge in der von Microsoft gehosteten Infrastruktur oder Ihrer eigenen (selbstgehosteten) Infrastruktur ausführen.

Microsoft bietet standardmäßig in jeder Organisation eine kostenlose Dienstebene an, die mindestens einen Parallelauftrag umfasst. Je nach Anzahl der gleichzeitig auszuführenden Pipelines benötigen Sie möglicherweise weitere Parallelaufträge, um mehrere von Microsoft gehostete oder selbstgehostete Agents gleichzeitig zu verwenden. Weitere Informationen zu Parallelaufträgen und verschiedenen kostenlosen Dienstebenen finden Sie unter Parallelaufträge in Azure Pipelines.

Möglicherweise benötigen Sie weitere Parallelaufträge, um mehrere Agents gleichzeitig zu verwenden:

Wichtig

Ab Azure DevOps Server 2019 müssen Sie für selbstgehostete gleichzeitige Aufträge in Releases nichts bezahlen. Lediglich die Anzahl der verfügbaren Agents ist begrenzt.

Funktionen

Jeder selbstgehostete Agent verfügt über eine Reihe von Funktionen, die angeben, welche Aufgaben er übernehmen kann. Fähigkeiten sind Name-Wert-Paare, die entweder automatisch von der Agentsoftware ermittelt werden (bezeichnet als Systemfunktionen) oder von Ihnen definiert werden (in diesem Fall als Benutzerfunktionen bezeichnet).

Die Agentsoftware ermittelt automatisch verschiedene Systemfunktionen, beispielsweise den Namen des Computers, den Typ des Betriebssystems und die Versionen bestimmter auf dem Computer installierter Software. Außerdem werden auf dem Computer definierte Umgebungsvariablen automatisch in der Liste der Systemfunktionen angezeigt.

Hinweis

Das Speichern von Umgebungsvariablen als Funktionen bedeutet, dass bei der Ausführung eines Agents die gespeicherten Funktionswerte zum Festlegen der Umgebungsvariablen verwendet werden. Außerdem werden sämtliche Änderungen an Umgebungsvariablen, die während der Ausführung des Agents durchgeführt werden, nicht von einer Aufgabe übernommen und verwendet. Wenn Sie über vertrauliche Umgebungsvariablen verfügen, die sich ändern und nicht als Funktionen gespeichert werden sollen, können Sie diese ignorieren, indem Sie die Umgebungsvariable VSO_AGENT_IGNORE mit einer durch Komma getrennten Liste der zu ignorierenden Variablen festlegen. Zum Beispiel ist PATH eine kritische Variable, die Sie bei der Installation von Software möglicherweise ignorieren sollten.

Wenn Sie eine Pipeline erstellen, legen Sie bestimmte Anforderungen für den Agent fest. Das System sendet den Auftrag nur an Agents, deren Funktionen den in der Pipeline angegebenen Anforderungen entsprechen. So können Sie mithilfe von Agentfunktionen Aufträge an bestimmte Agents weiterleiten.

Hinweis

Anforderungen und Funktionen sind für die Verwendung mit selbstgehosteten Agents konzipiert, damit Aufträge einem Agent zugewiesen werden können, der die Anforderungen des Auftrags erfüllt. Wenn Sie von Microsoft gehostete Agents verwenden, wählen Sie ein Image für den Agent aus, das den Anforderungen des Auftrags entspricht. Obwohl es möglich ist, einem von Microsoft gehosteten Agent Funktionen hinzuzufügen, müssen Sie bei von Microsoft gehosteten Agents keine Funktionen verwenden.

Konfigurieren der Anforderungen

Um Ihrer YAML-Buildpipeline eine Anforderung hinzuzufügen, fügen Sie dem Abschnitt demands: die Zeile pool hinzu.

pool:
  name: Default
  demands: SpecialSoftware # exists check for SpecialSoftware

Sie können überprüfen, ob eine Funktion vorhanden ist, oder einen Vergleich mit dem Wert einer Funktion vornehmen. Weitere Informationen finden Sie unter YAML-Schema: Anforderungen.

Konfigurieren von Agentfunktionen

Sie können sich die Details zu einem Agent ansehen, einschließlich seiner Version und Systemfunktionen, und dessen Benutzerfunktionen verwalten, indem Sie zu Agentpools navigieren und die Registerkarte Funktionen für den gewünschten Agent auswählen.

  1. Navigieren Sie in Ihrem Webbrowser zu „Agentpools“:

    1. Melden Sie sich bei Ihrem organization (https://dev.azure.com/{yourorganization}) an.

    2. Wählen Sie Azure DevOps, Organisationseinstellungen aus.

      Auswählen von „Organisationseinstellungen“

    3. Wählen Sie Agentpools aus.

      Registerkarte „Agentpools auswählen“

    1. Melden Sie sich bei Ihrer Projektsammlung unter http://your-server/DefaultCollection an.

    2. Wählen Sie Azure DevOps > Sammlungseinstellungen aus.

      Auswählen von „Sammlungseinstellungen“

    3. Wählen Sie Agentpools aus.

      Auswählen von „Agentpools“

    1. Wählen Sie Azure DevOps > Sammlungseinstellungen aus.

      Sammlungseinstellungen (2019)

    2. Wählen Sie Agentpools aus.

      Auswählen von „Agentpools“ (2019)

  2. Navigieren Sie zur Registerkarte „Funktionen“:

    1. Wählen Sie auf der Registerkarte Agent-Pools den gewünschten Agent-Pool aus.

      Auswählen des gewünschten Agentpools unter „Agentpools“.

    2. Wählen Sie Agents und dann den gewünschten Agent aus.

      Auswählen der Option „Agents“ und des Agents.

    3. Wählen Sie die Registerkarte Funktionen aus.

      Auswählen der Registerkarte „Funktionen“.

      Hinweis

      Von Microsoft gehostete Agents zeigen keine Systemfunktionen an. Eine Liste der auf von Microsoft gehosteten Agents installierten Software finden Sie unter Verwenden eines von Microsoft gehosteten Agents.

    1. Wählen Sie auf der Registerkarte Agentpools den gewünschten Agentpool aus.

      Auswählen des gewünschten Pools.

    2. Wählen Sie Agents und dann den gewünschten Agent aus.

      Auswählen der Option „Agents“ und des gewünschten Agents.

    3. Wählen Sie die Registerkarte Funktionen aus.

      Registerkarte „Funktionen“ für den Agent.

    1. Wählen Sie auf der Registerkarte Agentpools den gewünschten Agentpool aus.

      Auswählen der gewünschten Registerkarte (2019)

    2. Wählen Sie Agents und dann den gewünschten Agent aus.

      Auswählen des gewünschten Agents (2019)

    3. Wählen Sie die Registerkarte Funktionen aus.

      Auswählen der Registerkarte „Funktionen“ (2019)

  3. Um eine neue Funktion beim Agent zu registrieren, wählen Sie Neue Funktion hinzufügen aus.

Tipp

Nachdem Sie eine neue Software auf einem selbstgehosteten Agent installiert haben, müssen Sie den Agent neu starten, damit die neue Funktion angezeigt wird. Weitere Informationen finden Sie unter Neustarten des Windows-Agents, Neustarten des Linux-Agents und Neustarten des Mac-Agents.

Kommunikation

Kommunikation mit Azure Pipelines

Kommunikation mit Azure DevOps Server

Der Agent kommuniziert mit Azure Pipelines oder Azure DevOps Server, um zu ermitteln, welcher Auftrag ausgeführt werden muss, und meldet die Protokolle und den Auftragsstatus. Diese Kommunikation wird immer vom Agent initiiert. Alle Nachrichten vom Agent an Azure Pipelines oder Azure DevOps Server werden über HTTP- HTTPS gesendet, je nachdem, wie Sie den Agent konfigurieren. Dieses Pullmodell ermöglicht die Konfiguration des Agents in verschiedenen Topologien, wie unten dargestellt.

Agenttopologien in lokalen Installationen

Agenttopologien in Azure DevOps Services

Nachfolgend finden Sie ein allgemeines Kommunikationsmuster zwischen dem Agent und Azure-Pipeline bzw. Azure DevOps Server.

  1. Der Benutzer registriert einen Agent bei Azure Pipelines oder Azure DevOps Server, indem er ihn zu einem Agentpool hinzufügt. Sie müssen als Agentpooladministrator fungieren, um einen Agent in diesem Agentpool zu registrieren. Die Identität des Agentpooladministrators ist nur zum Zeitpunkt der Registrierung erforderlich, wird nicht auf dem Agent beibehalten und nicht in der weiteren Kommunikation zwischen Agent und Azure Pipelines oder Azure DevOps Server verwendet. Sobald die Registrierung abgeschlossen ist, lädt der Agent ein Listener-OAuth-Token herunter und verwendet es zum Lauschen an der Auftragswarteschlange.

  2. Der Agent ermittelt laufend mit einer langen HTTP-Umfrage, ob eine neue Auftragsanforderung in der Auftragswarteschlange in Azure Pipelines/Azure DevOps Server für den Agent veröffentlicht wurde. Wenn ein Auftrag verfügbar ist, lädt der Agent den Auftrag sowie ein auftragsspezifisches OAuth-Token herunter. Dieses Token wird von Azure Pipelines/Azure DevOps Server für die bereichsbasierte Identität generiert, die in der Pipeline angegeben ist. Dieses Token ist kurzlebig und wird vom Agent im Rahmen dieses Auftrags für den Zugriff auf Ressourcen (z. B. Quellcode) oder zum Ändern von Ressourcen (z. B. Hochladen von Testergebnissen) auf Azure Pipelines oder Azure DevOps Server verwendet.

  3. Nachdem der Auftrag durchgeführt wurde, verwirft der Agent das auftragsspezifische OAuth-Token und überprüft mithilfe des Listener-OAuth-Tokens, ob eine neue Auftragsanforderung vorliegt.

Die Nutzlast der Nachrichten, die zwischen dem Agent und Azure Pipelines/Azure DevOps Server ausgetauscht werden, werden mit asymmetrischer Verschlüsselung gesichert. Jeder Agent verfügt über ein Paar aus öffentlichem und privatem Schlüssel, und der öffentliche Schlüssel wird während der Registrierung mit dem Server ausgetauscht. Der Server verwendet den öffentlichen Schlüssel, um die Nutzlast des Auftrags zu verschlüsseln, bevor sie an den Agent gesendet wird. Der Agent entschlüsselt den Auftragsinhalt mit seinem privaten Schlüssel. Geheimnisse, die in Pipelines oder Variablengruppen gespeichert sind, werden beim Austausch mit dem Agent auf diese Weise gesichert.

Hinweis

Der Agent bietet Unterstützung für die UTF-8-Clientcodierungsausgabe. Wenn Ihr System jedoch eine andere Codierung als UTF-8 aufweist, treten möglicherweise einige Probleme bei der Protokollausgabe auf. Die Protokolle können beispielsweise Zeichen enthalten, die von der Codierung Ihres Systems nicht erkannt werden, wodurch sie möglicherweise als unleserliche oder fehlende Symbole angezeigt werden.

Kommunikation für die Bereitstellung auf Zielservern

Wenn Sie den Agent verwenden, um Artefakte für eine Gruppe von Servern bereitzustellen, muss er über eine „Sichtverbindung“ mit diesen Servern verfügen. Die von Microsoft gehosteten Agentpools verfügen standardmäßig über Konnektivität mit Azure-Websites und -Servern, die in Azure ausgeführt werden.

Hinweis

Wenn Ihre Azure-Ressourcen in einem virtuellen Azure-Netzwerk ausgeführt werden, können Sie die Agent-IP-Bereiche abrufen, in denen von Microsoft gehostete Agents bereitgestellt werden, damit Sie die Firewallregeln für Ihr virtuelles Azure-Netzwerk so konfigurieren können, dass es den Zugriff durch den Agent zulässt.

Wenn Ihre lokalen Umgebungen über keine Verbindung zu einem von Microsoft gehosteten Agentpool verfügen (was in der Regel aufgrund von dazwischenliegenden Firewalls der Fall ist), müssen Sie einen selbstgehosteten Agent auf lokalen Computern manuell konfigurieren. Die Agents müssen über Konnektivität mit den lokalen Zielumgebungen verfügen und Zugriff auf das Internet haben, um eine Verbindung mit Azure Pipelines oder Team Foundation Server herstellen zu können, wie im folgenden Schaubild dargestellt.

Agentkonnektivität für lokale Umgebungen

Authentifizierung

Zum Registrieren eines Agents müssen Sie Mitglied der Administratorrolle im Agentpool sein. Die Identität des Agentpooladministrators ist nur zum Zeitpunkt der Registrierung erforderlich, wird nicht auf dem Agent beibehalten und nicht in der nachfolgenden Kommunikation zwischen Agent und Azure Pipelines oder Azure DevOps Server verwendet. Darüber hinaus müssen Sie ein lokaler Administrator auf dem Server sein, um den Agent zu konfigurieren.

Wählen Sie bei der Registrierung eines Agents aus den folgenden Authentifizierungstypen aus. Sie werden daraufhin von der Agent-Einrichtung aufgefordert, die spezifischen zusätzlichen Informationen anzugeben, die für jeden Authentifizierungstyp erforderlich sind. Weitere Informationen finden Sie unter Authentifizierungsoptionen für selbstgehostete Agents.

  • Persönliches Zugriffstoken
  • Alternativ: Stellen Sie mithilfe der Standardauthentifizierung eine Verbindung zu Azure DevOps Server oder TFS her. Wenn Sie Alternativ auswählen, werden Sie aufgefordert, Ihre Anmeldeinformationen anzugeben.

Windows-Agents verfügen über die folgenden zwei zusätzlichen Authentifizierungsoptionen bei Azure DevOps Server.

  • Aushandeln Stellen Sie als ein anderer Benutzer als der angemeldete Benutzer eine Verbindung mit Azure DevOps Server über ein Windows-Authentifizierungsschema wie NTLM oder Kerberos her. Nach dem Auswählen von „Aushandeln“ werden Sie zur Eingabe von Anmeldeinformationen aufgefordert.
  • Integriert (Standard): Verbinden Sie einen Windows-Agent über ein Windows-Authentifizierungsschema wie NTLM oder Kerberos mit Azure DevOps Server, indem Sie die Anmeldeinformationen des angemeldeten Benutzers verwenden. Bei Verwendung dieser Methode werden Sie nicht zur Eingabe von Anmeldeinformationen aufgefordert.

Wichtig

Ihr Server muss für die Unterstützung der Authentifizierungsmethoden konfiguriert sein, um die Authentifizierungsoptionen „Alternativ“, „Verhandeln“ oder „Integriert“ zu verwenden.

Die zum Registrieren des Agents verwendete Authentifizierungsmethode wird lediglich während der Agent-Registrierung verwendet. Weitere Informationen dazu, wie Agents nach der Registrierung mit Azure Pipelines kommunizieren, finden Sie unter Kommunikation mit Azure Pipelines oder Azure DevOps Server.

Interaktiv vs. Dienst

Sie können Ihren selbstgehosteten Agent entweder als Dienst oder als interaktiven Prozess ausführen. Nach dem Konfigurieren des Agents wird empfohlen, ihn zunächst im interaktiven Modus zu testen, um sicherzustellen, dass er funktioniert. Anschließend wird empfohlen, den Agent in einem der folgenden Modi auszuführen, damit er in der Produktionsumgebung zuverlässig ausgeführt wird. Diese Modi stellen auch sicher, dass der Agent automatisch gestartet wird, wenn der Computer neu gestartet wird.

  1. Als Dienst: Sie können den Dienst-Manager des Betriebssystems verwenden, um den Lebenszyklus des Agents zu verwalten. Darüber hinaus läuft das automatische Upgrade des Agents besser ab, wenn er als Dienst ausgeführt wird.

  2. Als interaktiver Prozess mit aktivierter automatischer Anmeldung: In einigen Fällen müssen Sie den Agent möglicherweise interaktiv für die Produktion ausführen, z. B. zum Ausführen von UI-Tests. Wenn der Agent für die Ausführung in diesem Modus konfiguriert ist, ist auch der Bildschirmschoner deaktiviert. Einige Domänenrichtlinien verhindern möglicherweise das Aktivieren der automatischen Anmeldung oder das Deaktivieren des Bildschirmschoners. In solchen Fällen müssen Sie möglicherweise eine Ausnahme von der Domänenrichtlinie anfordern oder den Agent auf einem Arbeitsgruppencomputer ausführen, auf dem die Domänenrichtlinien nicht gelten.

    Hinweis

    Es besteht ein Sicherheitsrisiko, wenn Sie die automatische Anmeldung aktivieren oder den Bildschirmschoner deaktivieren, da Sie so anderen Benutzer*innen die Möglichkeit geben, sich an den Computer zu begeben und das automatisch angemeldete Konto zu verwenden. Wenn Sie den Agent so konfigurieren, dass er auf diese Weise ausgeführt wird, müssen Sie sicherstellen, dass der Computer physisch geschützt ist (sich beispielsweise in einer sicheren Einrichtung befindet). Wenn Sie per Remotedesktop auf den Computer zugreifen, auf dem ein Agent mit automatischer Anmeldung ausgeführt wird, führt das einfache Schließen von Remotedesktop dazu, dass der Computer gesperrt wird und beliebige auf dem Agent ausgeführte Tests der Benutzeroberfläche fehlschlagen. Um dies zu vermeiden, trennen Sie die Verbindung mit dem Remotedesktop mit dem Befehl tscon. Beispiel:

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

Agentkonto

Unabhängig davon, ob Sie einen Agent als Dienst oder interaktiv ausführen, können Sie auswählen, welches Computerkonto Sie zum Ausführen des Agents verwenden. (Beachten Sie, dass sich dieses Konto von den Anmeldeinformationen unterscheidet, die Sie für die Registrierung des Agents bei Azure Pipelines oder Azure DevOps Server verwenden). Die Wahl des Agentkontos hängt ausschließlich von den Anforderungen der Aufgaben ab, die in Ihren Build- und Bereitstellungsaufträgen ausgeführt werden.

Wenn Sie z. B. Aufgaben ausführen möchten, die per Windows-Authentifizierung auf einen externen Dienst zugreifen, müssen Sie den Agent mit einem Konto ausführen, das Zugriff auf diesen Dienst hat. Wenn Sie allerdings UI-Tests wie Selenium oder Tests der programmierten UI ausführen, die einen Browser erfordern, wird der Browser im Kontext des Agentkontos gestartet.

Unter Windows sollten Sie die Verwendung eines Dienstkontos wie „Netzwerkdienst“ oder „Lokaler Dienst“ in Erwägung ziehen. Diese Konten verfügen über eingeschränkte Berechtigungen und ihre Kennwörter laufen nicht ab, sodass der Agent langfristig weniger Verwaltungsaufwand erfordert.

Agent-Version und Upgrades

Microsoft aktualisiert die Agentsoftware in Azure Pipelines alle paar Wochen. Die Version des Agents wird im Format {major}.{minor} angegeben. Wenn die Agentversion zum Beispiel 2.1 lautet, dann ist die Hauptversion 2 und die Nebenversion 1.

Von Microsoft gehostete Agents werden immer auf dem neuesten Stand gehalten. Wenn sich die neuere Agentversion nur in der Nebenversion unterscheidet, können selbstgehostete Agents in der Regel automatisch durch Azure Pipelines aktualisiert werden (konfigurieren Sie diese Einstellung in Agentpools, wählen Sie Ihren Agent aus, wählen Sie Einstellungen – die Standardeinstellung lautet „Aktiviert“). Ein Upgrade wird angefordert, wenn für ein Plattformfeature oder eine der in der Pipeline verwendeten Aufgaben eine neuere Version des Agents benötigt wird.

Wenn Sie einen selbstgehosteten Agent interaktiv ausführen, oder wenn eine neuere Hauptversion des Agents verfügbar ist, müssen Sie ein Upgrade für die Agents möglicherweise manuell durchführen. Diese Aktualisierung kann ganz einfach über die Registerkarte Agentpools unterhalb Ihrer Organisation vorgenommen werden. Ihre Pipelines werden erst dann ausgeführt, wenn sie einen kompatiblen Agent auswählen können.

So aktualisieren Sie selbstgehostete Agents

  1. Navigieren Sie zu Projekteinstellungen > Agentpools.

    „Projekteinstellungen“ > „Agentpools“

  2. Wählen Sie Ihren Agentpool aus, und wählen Sie Alle Agents aktualisieren aus.

    „Alle Agents aktualisieren“

    Sie können Agents auch einzeln aktualisieren, indem Sie im Menü ... die Option Agent aktualisieren auswählen.

    „Agent aktualisieren“

  3. Wählen Sie Aktualisieren aus, um die Aktualisierung zu bestätigen.

    Bestätigung zur Aktualisierung aller Agents

  4. Für jeden Agent im Pool wird eine Aktualisierungsanforderung in die Warteschlange eingereiht. Diese wird ausgeführt, wenn alle derzeit ausgeführten Aufträge abgeschlossen sind. Das Upgrade dauert in der Regel nur wenige Augenblicke – lange genug, um die neueste Version der Agentsoftware (etwa 200 MB) herunterzuladen, zu entpacken und den Agent mit der neuen Version neu zu starten. Sie können den Status Ihrer Agents auf der Registerkarte Agents überwachen.

Microsoft aktualisiert die Agent-Software mit jedem Update in Azure DevOps Server. Die Version des Agents wird im Format {major}.{minor} angegeben. Wenn die Agentversion zum Beispiel 2.1 lautet, dann ist die Hauptversion 2 und die Nebenversion 1.

Wenn Ihre Azure DevOps Server-Instanz eine neuere Version des Agents aufweist und dieser neuere Agent sich nur in der Nebenversion unterscheidet, kann er in der Regel automatisch aktualisiert werden. Ein Upgrade wird angefordert, wenn für ein Plattformfeature oder eine der in der Pipeline verwendeten Aufgaben eine neuere Version des Agents benötigt wird. Ab Azure DevOps Server 2019 müssen Sie nicht auf ein neues Serverrelease warten. Sie können auf Anwendungsebene eine neue Version des Agents hochladen, und diese Version wird dann als Upgrade angeboten.

Wenn Sie den Agent interaktiv ausführen, oder wenn eine neuere Hauptversion des Agents verfügbar ist, müssen Sie ein Upgrade für die Agents möglicherweise manuell durchführen. Diese Aktualisierung kann ganz einfach über die Registerkarte Agentpools unterhalb Ihrer Projektsammlung vorgenommen werden. Ihre Pipelines werden erst dann ausgeführt, wenn sie einen kompatiblen Agent auswählen können.

Sie können die Version eines Agents anzeigen, indem Sie zu Agentpools navigieren und die Registerkarte Funktionen für den gewünschten Agent auswählen (siehe Beschreibung unter Konfigurieren von Agentfunktionen).

Um Agentupdates programmgesteuert auszulösen, können Sie die API für Agentaktualisierungen verwenden. Weitere Informationen hierzu finden Sie im Abschnitt Wie kann ich Agentaktualisierungen programmgesteuert für einen bestimmten Agentpool auslösen?

Hinweis

Kopieren Sie die ZIP-Datei des Agents bei Servern ohne Internetzugang manuell in den folgenden Ordner, um sie als lokale Datei zu verwenden. Erstellen Sie den Ordner Agents, wenn dieser nicht vorhanden ist.

  • Windows: %ProgramData%\Microsoft\Azure DevOps\Agents
  • Linux: usr/share/Microsoft/Azure DevOps/Agents
  • macOS: usr/share/Microsoft/Azure DevOps/Agents

Erstellen Sie den Ordner Agents, wenn dieser nicht vorhanden ist.

Häufig gestellte Fragen

Wie kann ich sicherstellen, dass ich über die neueste Version des v2-Agents verfüge?

  1. Navigieren Sie zur Registerkarte Agentpools:

    1. Melden Sie sich bei Ihrem organization (https://dev.azure.com/{yourorganization}) an.

    2. Wählen Sie Azure DevOps, Organisationseinstellungen aus.

      Auswählen von „Organisationseinstellungen“

    3. Wählen Sie Agentpools aus.

      Registerkarte „Agentpools auswählen“

    1. Melden Sie sich bei Ihrer Projektsammlung unter http://your-server/DefaultCollection an.

    2. Wählen Sie Azure DevOps > Sammlungseinstellungen aus.

      Auswählen von „Sammlungseinstellungen“

    3. Wählen Sie Agentpools aus.

      Auswählen von „Agentpools“

    1. Wählen Sie Azure DevOps > Sammlungseinstellungen aus.

      Sammlungseinstellungen (2019)

    2. Wählen Sie Agentpools aus.

      Auswählen von „Agentpools“ (2019)

  2. Klicken Sie auf den Pool, der den Agent enthält.

  3. Stellen Sie sicher, dass der Agent aktiviert ist.

  4. Navigieren Sie zur Registerkarte „Funktionen“:

    1. Wählen Sie auf der Registerkarte Agent-Pools den gewünschten Agent-Pool aus.

      Auswählen des gewünschten Agentpools unter „Agentpools“.

    2. Wählen Sie Agents und dann den gewünschten Agent aus.

      Auswählen der Option „Agents“ und des Agents.

    3. Wählen Sie die Registerkarte Funktionen aus.

      Auswählen der Registerkarte „Funktionen“.

      Hinweis

      Von Microsoft gehostete Agents zeigen keine Systemfunktionen an. Eine Liste der auf von Microsoft gehosteten Agents installierten Software finden Sie unter Verwenden eines von Microsoft gehosteten Agents.

    1. Wählen Sie auf der Registerkarte Agentpools den gewünschten Agentpool aus.

      Auswählen des gewünschten Pools.

    2. Wählen Sie Agents und dann den gewünschten Agent aus.

      Auswählen der Option „Agents“ und des gewünschten Agents.

    3. Wählen Sie die Registerkarte Funktionen aus.

      Registerkarte „Funktionen“ für den Agent.

    1. Wählen Sie auf der Registerkarte Agentpools den gewünschten Agentpool aus.

      Auswählen der gewünschten Registerkarte (2019)

    2. Wählen Sie Agents und dann den gewünschten Agent aus.

      Auswählen des gewünschten Agents (2019)

    3. Wählen Sie die Registerkarte Funktionen aus.

      Auswählen der Registerkarte „Funktionen“ (2019)

  5. Suchen Sie nach der Agent.Version-Funktion. Sie können diesen Wert anhand der neuesten veröffentlichten Agent-Version überprüfen. Weitere Informationen finden Sie unter Azure Pipelines-Agent. Suchen Sie auf der Seite nach der höchsten Versionsnummer.

  6. Jeder Agent aktualisiert sich automatisch, wenn er eine Aufgabe ausführt, die eine neuere Version des Agents erfordert. Wenn Sie einige Agents manuell aktualisieren möchten, klicken Sie mit der rechten Maustaste auf den Pool, und wählen Sie Alle Agents aktualisieren aus.

Kann ich meine v2-Agents aktualisieren, die Teil eines Azure DevOps Server-Pools sind?

Ja. Ab Azure DevOps Server 2019 können Sie Ihren Server so konfigurieren, dass er auf einem lokalen Datenträger nach den Agent-Paketdateien sucht. Diese Konfiguration überschreibt die Standardversion, die zum Zeitpunkt der Veröffentlichung des Servers mitgeliefert wurde. Dieses Szenario gilt auch, wenn der Server keinen Zugriff auf das Internet hat.

  1. Laden Sie von einem Computer mit Internetzugriff die neueste Version der Agent-Paketdateien (als ZIP- oder TAR.GZ-Dateien) von der GitHub-Releaseseite des Azure Pipelines-Agents herunter.

  2. Übertragen Sie die heruntergeladenen Paketdateien auf jede Azure DevOps Server-Anwendungsebene mithilfe einer Methode Ihrer Wahl (z. B. USB-Laufwerk, Netzwerkübertragung usw.). Platzieren Sie die Agent-Dateien unter dem Ordner %ProgramData%\Microsoft\Azure DevOps\Agents. Erstellen Sie den Ordner Agents, wenn dieser nicht vorhanden ist.

  3. Alles erledigt! Ihre Azure DevOps Server-Instanz verwendet nun die lokalen Dateien, wenn die Agents aktualisiert werden. Jeder Agent aktualisiert sich automatisch, wenn er eine Aufgabe ausführt, die eine neuere Version des Agents erfordert. Wenn Sie jedoch einige Agents manuell aktualisieren möchten, klicken Sie mit der rechten Maustaste auf den Pool, und wählen Sie Alle Agents aktualisieren aus.

Haben selbstgehostete Agents gegenüber von Microsoft gehosteten Agents Leistungsvorteile?

In vielen Fällen ja. Dies gilt insbesondere in folgenden Fällen:

  • Wenn Sie einen selbstgehosteten Agent verwenden, können Sie inkrementelle Builds ausführen. Wenn Sie beispielsweise eine Pipeline definieren, die das Projektarchiv nicht bereinigt und keine Buildbereinigung durchführt, werden Ihre Builds in der Regel schneller ausgeführt. Wenn Sie einen von Microsoft gehosteten Agent verwenden, können Sie diese Vorteile nicht nutzen (es sei denn, Sie verwenden Features wie das Zwischenspeichern), da der Agent nach Abschluss der Build- oder Releasepipeline zerstört wird.

  • Es kann länger dauern, bis der Build von einem von Microsoft gehosteten Agent gestartet wird. Obwohl es oft nur wenige Sekunden dauert, bis Ihr Auftrag einem von Microsoft gehosteten Agent zugewiesen wird, kann die Zuweisung eines Agents je nach Auslastung unseres Systems unter Umständen mehrere Minuten in Anspruch nehmen.

Kann ich mehrere selbstgehostete Agents auf demselben Computer installieren?

Ja. Dieser Ansatz eignet sich gut für Agents, die Aufträge ausführen, die nicht viele gemeinsam genutzte Ressourcen verbrauchen. Sie können ihn beispielsweise für Agents ausprobieren, die Releases ausführen, die größtenteils Bereitstellungen orchestrieren und nicht viel Arbeit auf dem Agent selbst ausführen.

In anderen Fällen werden Sie möglicherweise feststellen, dass der Betrieb mehrerer Agents auf demselben Computer keinen großen Effizienzgewinn bewirkt. Beispielsweise kann dies zutreffen, wenn Agents Builds ausführen, die viele Datenträger- und E/A-Ressourcen verbrauchen.

Es können auch Probleme auftreten, wenn parallele Buildaufträge dieselbe Singleton-Toolbereitstellung verwenden, z. B. npm-Pakete. Beispielsweise kann ein Build eine Abhängigkeit aktualisieren, die von einem anderen Build gerade verwendet wird. Dies kann unzuverlässige Ergebnisse und Fehler verursachen.

Wie verhalten sich Agents, wenn Aufträge in der Pipeline abgebrochen werden?

Bei von Microsoft gehosteten Agents wird der Agent entfernt und an den Azure Pipelines-Pool zurückgegeben.

Für selbstgehostete Agents:

Wenn eine Pipeline abgebrochen wird, sendet der Agent eine Folge von Befehlen an den Prozess, der den aktuellen Schritt ausführt. Der erste Befehl wird mit einem Timeout von 7,5 Sekunden gesendet. Wenn der Prozess noch nicht beendet wurde, wird ein zweiter Befehl mit einem Timeout von 2,5 Sekunden gesendet. Wenn der Prozess noch nicht beendet wurde, gibt der Agent einen Befehl zum Zerstören des Prozesses aus. Wenn der Prozess nicht auf die beiden ersten Beendigungsanforderungen reagiert, wird er zerstört. Von der ersten Anforderung bis zur Beendigung dauert es etwa 10 Sekunden.

Die Befehle, die zum Abbrechen der Pipeline an den Prozess ausgegeben werden, unterscheiden sich je nach Betriebssystem des Agents.

  • macOS und Linux: Die gesendeten Befehle lauten SIGINT, gefolgt von SIGTERM, gefolgt von SIGKILL.
  • Windows: Die an den Prozess gesendeten Befehle lauten STRG+C, gefolgt von STRG+Break, gefolgt von Process.Kill.

Wie kann ich Agentaktualisierungen programmgesteuert für einen bestimmten Agentpool auslösen?

Sie können Agent-Aktualisierungen für den Pool auslösen, indem Sie die folgende API verwenden:

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

Hinweis

Weitere Informationen zur Versionszuordnung der API sowie von Azure DevOps Server finden Sie unter API- und Azure DevOps Server-Versionszuordnung.

URI-Parameter

Name Geben Sie in Erforderlich Type BESCHREIBUNG
agentId Abfrage False Zeichenfolge Der zu aktualisierende Agent. Sofern nicht angegeben, wird die Aktualisierung für alle Agents ausgelöst.
organization path True Zeichenfolge Der Name der Azure DevOps-Organisation.
poolId path True integer int32 Der zu verwendende Agentpool.
api-version Abfrage False Zeichenfolge Version der zu verwendenden API. Diese sollte auf 6.0 festgelegt werden, um diese Version der API zu verwenden.

Um eine Aktualisierung des Agents auszulösen, sollte der Anforderungstext leer sein.

Hinweis

Der Azure Pipelines-Agent steht auf GitHub als Open-Source-Version zur Verfügung.

Weitere Informationen

Weitere Informationen zu Agents finden Sie in den folgenden Modulen im Lernpfad Erstellen von Anwendungen mit Azure DevOps.