Was ist Azure Pipelines?

Abgeschlossen

Microsoft Azure Pipelines ist ein Clouddienst, den Sie zum automatischen Erstellen, Testen und Bereitstellen Ihres Codeprojekts verwenden können. Sie können ihn auch anderen Benutzer*innen zur Verfügung stellen, und er funktioniert mit nahezu jeder Sprache oder jedem Projekttyp.

Mara freut sich darauf, den Buildprozess des Teams in Azure Pipelines zu replizieren. Amita, die Testerin, hat endlich etwas Zeit und möchte sich auf den neuesten Stand bringen lassen. Mara findet, dass jetzt der richtige Zeitpunkt ist, Amita von ihrem Plan zu erzählen: Sie möchte mithilfe von Azure Pipelines eine automatisierte Buildpipeline für die Website Space Game einrichten.

Als Amita Maras Plan hört, ist sie etwas zurückhaltend. Da Maras Plan jedoch vorsieht, den Buildprozess zu replizieren und nicht zu ersetzen, ist Amita auch neugierig. Sie weiß, dass der Buildprozess verbessert werden muss.

Amita: Das klingt nach einer interessanten Übung, aber du willst ja nur beweisen, wie toll DevOps ist.

Mara: Du kennst mich bereits zu gut.

Amita: Welche Verbesserungen erwartest du, besonders da du nur das machen willst, was wir bereits tun?

Mara: Ich denke, dass schon alleine das Verschieben in Azure Pipelines viele Vorteile bringen wird. Wie du sicher noch weißt, ist Azure Pipelines ein Clouddienst. Wir können ihn verwenden, um Code automatisch zu erstellen und zu testen. Außerdem wird er auch für andere Benutzer verfügbar sein. Er funktioniert in jeder Sprache und mit jedem Projekttyp.

Unser Buildserver hat Probleme, und es ist auch schwierig, ihn auf dem neuesten Stand zu halten. Da Azure Pipelines Buildserver bereitstellt, die von Microsoft gehostet und verwaltet werden, erhalten diese immer die neuesten Patches und Sicherheitsupdates. Wir müssen uns nicht mehr um die Wartung der Buildserver kümmern.

Außerdem haben wir alle Arten von Skripts, die von verschiedenen Leuten geschrieben wurden. Wir verstehen nicht einmal, wie einige von ihnen funktionieren. Azure Pipelines beinhaltet einen Katalog von Aufgaben. Eine Aufgabe ist ein gepacktes Skript oder eine Prozedur, die mit einem Satz von Eingaben abstrahiert wurde. Ich werde versuchen, das, was unsere Buildskripts machen, diesen Aufgaben zuzuordnen. Zumindest können wir standardisieren, wie Dinge erledigt werden, und den Grad der Automatisierung erhöhen.

Und Azure Pipelines funktioniert mit vielen verschiedenen Sprachen und App-Typen. Wenn wir in diese Richtungen expandieren wollen, müssen wir nicht umrüsten.

Amita: Ich weiß, es ist egoistisch, aber warum sollte mich das kümmern? Eines meiner großen Probleme ist, dass ich nie weiß, wann ein Build zum Testen bereit ist. Manchmal denkt jemand daran, das Arbeitsblatt zu aktualisieren, aber oft wird es auch vergessen. Es scheint, als wäre ich immer die letzte Person, die es erfährt.

Mara: Stimmt, das ist etwas, das wir leicht beheben können. Wir können die Pipeline so einrichten, dass du automatisch benachrichtigt wirst, entweder per E-Mail oder durch eine andere Benachrichtigung, wenn ein Build fertig ist. Du musst nie wieder darauf warten müssen, dass dich jemand daran erinnert.

Amita: OK, dein Ziel im Moment ist es also, die App zu erstellen und mich zu informieren, wenn sie fertig ist?

Mara: Genau! Natürlich habe ich größere Pläne. Ich weiß, dass ihr alle diesen ersten Schritt lieben werdet. Deshalb möchte ich darauf aufbauen, um uns echte Continuous Integration zu ermöglichen.

Amita: Gib mir die 5-Minuten-Kurzversion über Continuous Integration.

Mara: Lass mich dir ein Bild zeichnen.

Mara geht zum Whiteboard und zeichnet die Pipeline.

Screenshot of a hand-drawn illustration of a CI pipeline. The Build, Test, and Verify stages act on code. The build artifact is the output.

Mara: Dies ist meine CI-Pipeline. CI ist der Prozess, mit dem das Erstellen und Testen von Code bei jedem Committen von Änderungen durch Teammitglieder an die Versionskontrolle automatisiert werden kann. Ich weiß, wir machen noch keine automatisierten Tests, aber gib der Sache noch etwas Zeit.

Eine Pipeline definiert den Continuous Integration-Prozess für die App. Sie besteht aus Schritten, die als Tasks bezeichnet werden. Du kannst sie dir als ein Skript vorstellen, das definiert, wie Build-, Test- und Bereitstellungsschritte ausgeführt werden. Ich werde versuchen, unsere Skripts den Aufgaben zuzuordnen.

Die Pipeline wird ausgeführt, wenn Sie Codeänderungen übermitteln . Du kannst die Pipeline so konfigurieren, dass sie automatisch ausgeführt wird, oder du kannst sie manuell ausführen. Du verbindest deine Pipeline mit einem Quellrepository wie GitHub, Bitbucket oder Subversion. Eine unserer Aufgaben für diesen Sprint ist es, mit der Verwendung von GitHub zu beginnen. Wir verwenden daher GitHub für dieses Projekt.

Ein Build-Agent erstellt den Code oder stellt diesen bereit. Wenn der Build oder die Bereitstellung ausgeführt wird, startet das System einen oder mehrere Aufträge. Ein Agent ist eine installierbare Software, die immer einen Build- oder Bereitstellungsauftrag gleichzeitig ausführt. Da wir Azure Pipelines verwenden, können wir einen von Microsoft gehosteten Agent verwenden. Bei den von Microsoft gehosteten Agents werden uns Wartung und Upgrades abgenommen. Jedes Mal, wenn wir eine Pipeline ausführen, erhalten wir einen neuen virtuellen Computer. Uns stehen verschiedene VM-Images zur Auswahl, darunter Ubuntu 22.04, das wir verwenden.

Das Endprodukt der Pipeline ist ein Buildartefakt. Stellen dir ein Artefakt als die kleinste kompilierte Einheit vor, die wir zum Testen oder Bereitstellen der App benötigen. Ein Artefakt kann zum Beispiel sein:

  • Eine in eine JAR- oder ZIP-Datei gepackte Java- oder .NET-App
  • Eine C++- oder JavaScript-Bibliothek.
  • Ein virtuelles Computer-, Cloud- oder Docker-Image.

Fertig! Ich weiß, dass wir das schaffen können.

Amita: Das klingt toll. Sehen wir uns an, was du machen musst, damit es funktioniert und wie lange du dafür brauchst. Du kannst uns allen eine Demo geben.

Mara: Wird gemacht!

Verwalten von Build-Agents

Nachdem Sie und das Team nun mit Azure Pipelines vertraut sind, soll es nun etwas mehr um Build-Agents gehen. Ein Build-Agent ist eine installierbare Softwarekomponente, die jeweils einen Build- oder Bereitstellungsauftrag ausführt. Um Ihren Code zu erstellen oder Ihre Software bereitzustellen, benötigen Sie mindestens einen Agent. Wenn Sie mehr Code und Personen hinzufügen, werden Sie letztendlich mehr als einen Agent benötigen. Es gibt zwei Hauptkategorien von Agents.

  • Bei von Microsoft gehosteten Agents werden Wartung und Upgrades für Sie übernommen. Bei jeder Pipelineausführung erhalten Sie einen neuen Agent für die einzelnen Aufträge in der Pipeline. Wenn Sie in diesem Modul Lokale Entwicklungsumgebung mit einem von Microsoft gehosteten Agent auswählen, wird Ihre Pipeline auf einem von Microsoft gehosteten Agent ausgeführt. Zum Ausführen von Pipelines auf einem von Microsoft gehosteten Agent muss Ihre Organisation über mindestens einen von Microsoft gehosteten Parallelauftrag verfügen. Überprüfen Sie die Anzahl der von Microsoft gehosteten Parallelaufträge, um sicherzustellen, dass Sie über mindestens einen von Microsoft gehosteten Parallelauftrag verfügen. Wenn die Anzahl Ihrer von Microsoft gehosteten Parallelaufträge null ist (neue Azure DevOps-Organisationen verfügen in der Regel über null Parallelaufträge), können Sie eine kostenlose Zuweisung anfordern. Der Genehmigungsprozess für die kostenlose Gewährung dauert in der Regel 2-3 Werktage.

  • Selbstgehostete Agents sind Agents, die von Ihnen verwaltet werden. Sie konfigurieren die virtuellen Computer oder Container, indem Sie die Agent-Software und die gewünschten Tools installieren und die Agents bei Azure DevOps registrieren. Wenn Sie in diesem Modul GitHub Codespaces-Entwicklungsumgebung mit einem selbstgehosteten Agent auswählen, wird ein selbstgehosteter Agent verwendet, der in Ihrem GitHub Codespaces-Container ausgeführt wird. Das Selbsthosten des Agents in einem GitHub Codespaces-Container ist kein typisches Produktionsszenario, bietet aber eine Umgebung zum Abschließen dieses Trainingsmoduls.

Überprüfen Sie Ihr Wissen

1.

Welches der Folgenden ist ein Beispiel für ein Buildartefakt?