Erstellen Sie Ihre erste Azure DevOps-Pipeline von Grund auf

Software muss geschrieben, getestet und in eine Produktionsumgebung implementiert werden. Um dies automatisiert zu tun, erstellen Entwickler und DevOps CI/CD-Pipelines oder Build-/Release-Pipelines, die einen Großteil dieser Aktivitäten automatisieren.

A pipeline allows developers, DevOps teams and others to produce and deploy reliable code. In the Microsoft realm, the way to build a pipeline is with Azure DevOps with a feature called Azure Pipelines.

Azure Pipelines ermöglichen es Ihnen, Builds automatisch auszuführen, Tests durchzuführen und Code (Release) in verschiedene Entwicklungs- und Produktionsumgebungen bereitzustellen. Aber was ist, wenn Sie noch nie von Azure DevOps oder einer Pipeline gehört haben oder noch nie eine mit Azure DevOps erstellt haben? Wenn dem so ist, ist dieses Azure Pipelines-Tutorial genau das Richtige für Sie.

Ein großer Dank geht an Peter De Tender, Microsoft Azure Technical Trainer, für seine Hilfe bei diesem Artikel.

Projektübersicht

Dies ist ein Projektartikel, in dem wir erklären, wie man ein Projekt erstellt oder eine Lösung implementiert. Jeder Abschnitt wird auf den vorherigen aufbauenden kumulativen Schritte behandeln.

In diesem Projekt lernen Sie von Grund auf, wie Sie Ihre erste Azure DevOps-Pipeline erstellen. Sie werden Konzepte wie das Auslösen von Builds aus einem Git-Versionierungskommit, das automatische Ausführen von Tests und schließlich das Freigeben von Paketen in Umgebungen kennenlernen. Am Ende dieses Projekts haben Sie eine Beispiel-E-Commerce-Anwendung bereitgestellt als Azure WebApp.

Dieses Projekt sollte etwa 30 Minuten dauern, um abzuschließen.

Beachten Sie, dass Sie nicht belastet werden, wenn Sie dieses Projekt verfolgen und die erstellten Ressourcen sofort entfernen. Vergessen Sie nicht, sie zu entfernen!

Zielgruppe

Dieses Projekt behandelt die Grundlagen der Einrichtung Ihrer ersten Azure-Pipeline in der Azure DevOps-Webbenutzeroberfläche. Sie werden viel aus diesem Projekt lernen, wenn Sie neu bei Azure-Pipelines sind, aber nicht so viel, wenn Sie bereits Ihre eigenen Pipelines erstellt haben oder ein Azure-Pipelines-Experte sind.

Umgebungsvoraussetzungen

Wenn Sie dieses Projekt Schritt für Schritt durchgehen möchten, stellen Sie sicher, dass Sie mindestens Folgendes haben:

Erstellen einer Azure DevOps-Organisation

Weil wir absolut von Null anfangen, erstellen Sie zuerst das „Basis“-Objekt, das alle Azure DevOps-Funktionen und -Dienste enthält, das sogenannte Organisation. Die Organisation ist der Ort, an dem alle Projekte gespeichert sind, die Sie im nächsten Abschnitt erstellen werden.

  1. Vom Azure-Portal aus navigieren Sie zu Alle Dienste, suchen nach DevOps und wählen Azure DevOps aus. Sie können unten sehen, was Sie erwarten können. Dadurch wird die Azure DevOps-Blade geöffnet, wie unten gezeigt.
Azure DevOps dashboard

2. Klicken Sie als Nächstes auf Meine Azure DevOps-Organisationen und geben Sie Ihre Azure-Anmeldeinformationen ein. Dadurch gelangen Sie zu einer Seite, auf der Sie eine neue Organisation erstellen können, wie unten gezeigt. Klicken Sie hier auf die blaue Schaltfläche Neue Organisation erstellen.

Create new Azure DevOps organization page

3. Geben Sie auf der nächsten Seite einen Namen für die Organisation ein. Wenn Sie Probleme mit der Verwendung eines bestimmten Namens haben, überprüfen Sie die Namenskonventionen für Azure DevOps-Organisationen. Geben Sie auf diesem Bildschirm auch eine Azure-Region in Ihrer Nähe an. Klicken Sie, wenn Sie fertig sind, auf Weiter.

Azure DevOps organization creation page

An diesem Punkt ist Ihre Azure DevOps-Organisation erstellt!

Erstellen eines Azure DevOps-Projekts

Der nächste Schritt besteht darin, ein Projekt zu erstellen. Ein Projekt ist ein Container für die Pipeline, die Sie erstellen werden, verschiedene Artefakte und alle anderen Informationen, die sich auf einen bestimmten Dienst oder eine bestimmte Software beziehen.

Azure DevOps ermöglicht es Ihnen, ein Projekt während des gleichen Workflows wie die Erstellung einer Organisation zu erstellen, wie oben durchgeführt. Wenn Sie mitgemacht haben, sollten Sie jetzt eine Projekt-Erstellungsseite angezeigt bekommen, wie unten dargestellt.

  1. Auf der Projekt-Erstellungsseite geben Sie einen Namen für Ihr Projekt im Feld Projektname an. Für dieses Projekt verwenden Sie ein Azure DevOps-Projekt namens devopsdemo.
  2. Bestätigen Sie die Erstellung des Projekts, indem Sie auf die Schaltfläche + Projekt erstellen klicken.
  3. Lassen Sie vorerst die Sichtbarkeit auf Privat eingestellt. Dadurch wird sichergestellt, dass Ihr Projekt nicht dem Internet ausgesetzt ist. Ein öffentliches Projekt ermöglicht Nicht-Mitgliedern eines Projekts und nicht angemeldeten Benutzern den schreibgeschützten Zugriff auf die Artefakte des Projekts.
Azure DevOps project creation page

An diesem Punkt wurde Ihre Azure DevOps-Arbeitsumgebung (Projekt + Organisation) erstellt. Wenn Sie mitgekommen sind, haben Sie jetzt eine Azure DevOps-Organisation namens pdtitws123 und ein Projekt in dieser Organisation namens devopsdemo.

Azure DevOps project overview

Erstellen einer Azure DevOps-Build-Pipeline

Jetzt, da Sie eine Azure DevOps-Organisation und ein Projekt eingerichtet haben, können Sie jetzt eine Build-Pipeline erstellen. Die Pipeline ist der Ort, an dem die Magie passiert. Hier erstellen Sie Builds, um verschiedene Aufgaben wie das Kompilieren von Code, das Einbinden von Abhängigkeiten und mehr auszuführen.

  1. Vom Dashboard aus wählen Sie Pipelines und dann Builds.
Azure DevOps Builds menu

2.  Sie sehen eine Nachricht, die besagt, dass noch keine Build-Pipelines gefunden wurden. Klicken Sie auf New pipeline, um mit der Erstellung der Build-Pipeline zu beginnen.

No build pipelines bound yet. Creating a new pipeline.

3.  Sie werden dann aufgefordert, anzugeben, wo Ihr Code gespeichert ist. In diesem Projekt wird der Code in einem GitHub-Repository gespeichert. Wählen Sie GitHub. Hier wird der Code gespeichert und die Auslöser für das Auslösen des Builds werden kommen.

Selecting version control source

4.  Sobald Sie auf GitHub klicken, werden Sie aufgefordert, Ihre GitHub-Kontozugangsdaten einzugeben, wie unten gezeigt. Vor Beginn dieses Schritts sollten Sie ein leeres GitHub-Repo erstellt haben, wie in den Voraussetzungen in diesem Artikel definiert!

Providing GitHub credentials

5.  Bestätigen Sie als Nächstes den Schritt, in dem Sie aufgefordert werden, Azure Pipelines zu autorisieren. Dadurch wird sichergestellt, dass Azure DevOps Berechtigung zum Zugriff auf Ihre GitHub-Repos hat.

Authorizing Azure Pipelines to access GitHub

Verknüpfen eines GitHub-Repos mit der Build-Pipeline

Nachdem Sie Azure DevOps die Berechtigung für Ihr GitHub-Konto erteilt haben, können Sie nun ein GitHub-Repo mit der Build-Pipeline verknüpfen.

  1. Wählen Sie das leere GitHub-Repo aus, das Sie für dieses Projekt erstellt haben.
Empty source GitHub repo

2.  Erlauben Sie dem Projekt, den Quellcode aus dem zuvor ausgewählten Repository zu lesen, zu schreiben und zu überprüfen. Bestätigen Sie diesen Vorgang, indem Sie auf Approve & Install klicken.

Confirm Azure DevOps Github integration

3.  Durch das Klicken auf „Bestätigen“ wird ein Fehler generiert, wie unten gezeigt. Dieser Fehler tritt auf, weil das ausgewählte GitHub-Repo leer ist.

Error when GitHub repo is empty

An diesem Punkt ist Ihr GitHub-Repo mit Ihrer Azure DevOps-Build-Pipeline verknüpft.

Sie müssen nicht jedes Mal eine ganz neue Pipeline erstellen, wenn Sie ein GitHub-Repo mit einer Azure DevOps-Build-Pipeline verknüpfen möchten.

Beispielcode für das GitHub-Repository befüllen

Die Azure DevOps-Build-Pipeline wird ohne Code im GitHub-Repo nicht ausgeführt. Der Code spielt zu diesem Zeitpunkt keine Rolle. Um etwas Code im Repo zu haben, verwenden wir ein vorhandenes Repo, um Code zu klonen. In diesem Repo habe ich den gesamten Quellcode zur Verfügung, um eine Beispiel-E-Commerce-Anwendung in Azure WebApps zu veröffentlichen.

Der Beispielscode für dieses Repo enthält eine Beispiels-E-Commerce-Anwendung namens SimplCommerce. Diese Anwendung ist eine Open-Source-Dotnetcore-Anwendung, die realistischer ist als das typische „Hallo Welt“-Projekt.

  1. Navigieren Sie zu diesem Beispiel-GitHub-Repo und klicken Sie auf Code importieren, wie unten gezeigt.
Empty myfirstrepo GitHub repo

2. Verwenden Sie für die alte Klon-URL des Repos http://github.com/007FFFLearning/SimplDev und klicken Sie auf Import starten.

Proving the repo clone URL

Wenn der Import des Repos erfolgreich abgeschlossen ist, aktualisieren Sie das Fenster der Azure DevOps-Pipeline, sodass Sie jetzt fortfahren können.

Inspektion und Anzeige der Build-Pipeline in YAML

An diesem Punkt befinden Sie sich in der Überprüfungsphase des Prozesses zur Erstellung der Pipeline. Ihnen wird nun eine Darstellung der Build-Pipeline in YAML angezeigt. Diese YAML-Datei wird automatisch basierend auf der Erkennung der Quellcode-Sprache, die in diesem Projekt dotnetcore ist, erstellt.

Einer der wirklichen Vorteile von Azure DevOps ist die Pipeline YAML. Bei vielen anderen DevOps-Tools müssen Sie eine Pipeline-Datei manuell erstellen.

Reviewing pipeline YAML

Manuelles Ausführen der Azure Build-Pipeline

In einer kontinuierlichen Integration (CI)-Pipeline wird der Build in der Regel durch einen Commit in der Quellcodeverwaltung ausgelöst. Sie können jedoch auch manuell die Build-Pipeline starten. Lassen Sie uns eine Build-Pipeline manuell starten, um zu sehen, was passiert.

Wenn Sie bisher mitgekommen sind, sollten Sie jetzt auf „Ausführen“ klicken können, um die Build-Pipeline zu starten. Dadurch wird der Pipeline-Build-Prozess gestartet, wie Sie im folgenden Screenshot sehen können.

Pipeline starting

Nach einigen Sekunden können Sie sehen, dass der Prozess für macOS ausgeführt wird, wie unten gezeigt. Die Build-Pipeline gibt Informationen in Echtzeit zurück, während jeder Job und jede Aufgabe in der Pipeline ausgeführt wird.

Running on the macOS build agent

Die Build-Pipeline wiederholt dann den gleichen Prozess für die anderen Betriebssysteme (in diesem Beispiel), wie unten gezeigt. Die durchgeführten Schritte variieren stark je nachdem, wie die YAML-Datei erstellt wurde.

Running on the Linux build agent

Nach Abschluss des Builds werden Sie mit grünen Haken begrüßt, wie Sie unten sehen können. Dieser Screenshot zeigt an, dass jeder Plattform-Build erfolgreich durchgeführt wurde.

Successful pipeline run

Sie haben jetzt eine Azure DevOps-Build-Pipeline erstellt!

Erstellung einer Azure DevOps-Release-Pipeline

Die Build-Pipeline ist erstellt, was ein großer Fortschritt ist. Wenn Sie an diesem Punkt aufhören würden, wären Sie auf dem besten Weg zu einer vollständigen automatisierten Pipeline. Aber wir sind noch nicht fertig! Das ultimative Ziel von Software ist es, sie bereitzustellen, damit Kunden sie nutzen können. Es ist Zeit, auch eine Veröffentlichung mit einer Release-Pipeline zu automatisieren!

A release pipeline takes a build artifact, a result of the build process and deploys that to one or more environments. In this Project, you’re going to use a release pipeline to publish code in the GitHub repo to an Azure Web App.

  1. Von Azure DevOps aus klicken Sie auf Pipelines und dann auf Releases.
Releases menu item

2. Wählen Sie als Nächstes Neu und dann Neue Release-Pipeline aus. Dadurch wird der Assistent für die neue Release-Pipeline gestartet.

New release pipeline menu option

3. Wählen Sie aus der Vorlagenliste auf der rechten Seite Azure App Service-Bereitstellung aus. Sie sehen viele verschiedene Arten von Vorlagen, die Ihnen Zeit bei der Erstellung zukünftiger Release-Pipelines sparen können.

Select the Azure App Service deployment template

4. Geben Sie eine Beschreibung für den Stagename an. Die Stage wird Veröffentlichungsaufgaben enthalten. Verwenden Sie für dieses Projekt den Namen Deploy_to_webapp.

Specify the stage name

Die Release-Pipeline sollte jetzt wie auf dem untenstehenden Screenshot aussehen.

Created stage

5. Wählen Sie im Feld Stages 1 Job, 1 Aufgabe aus. In diesem Feld geben Sie später die Einstellungen der Azure Web App-Umgebung an, die Sie für die tatsächliche Bereitstellung verwenden werden.

6. Teil der Azure App Service-Bereitstellungsvorlage sind einige Parameter, die Sie in diesem Bildschirm definieren müssen.

  1. Bühnenname – Deploy-to-webapps2 in diesem Beispiel.
  2. Azure-Abonnement – wählen Sie Ihr Abonnement aus und bestätigen Sie mit Authorisieren (benötigt Anmeldeinformationen)
  3. App-Typ – Web-App auf Linux
  4. App Service-Name – die zuvor erstellte Web-App
Setting template parameters

7. Klicken Sie abschließend in der oberen Menüleiste Ihres Azure-Pipeline-Projekts auf Pipeline, wie unten gezeigt. Dadurch gelangen Sie zurück zum Hauptbildschirm und können den nächsten Schritt abschließen, der das Angeben der Artefakte beinhaltet.

Going back to the pipeline

Hinzufügen von Artefakten zur Azure DevOps-Release-Pipeline

In einer Release-Pipeline müssen viele verschiedene Elemente bereitgestellt werden. Diese Elemente werden Artefakte genannt. Artefakte sind kurz gesagt bereitstellbare Komponenten Ihrer Anwendung. Azure Pipelines können Artefakte bereitstellen, die von einer Vielzahl von Artefaktquellen erstellt werden.

In diesem Abschnitt zeigen wir Ihnen, wie Sie Artefakte zur Release-Pipeline hinzufügen können.

  1. Wenn Sie sich auf dem Pipeline-Bildschirm befinden, klicken Sie auf Artefakt hinzufügen.
  2. Der Quelltyp ist bereits auf Build eingestellt, was Sie möchten, da Sie die Ausgabe der zuvor erstellten Build-Pipeline bereitstellen möchten. Wählen Sie die zuvor erstellte Build-Pipeline im Dropdown-Menü Quelle (Build-Pipeline) aus.
  3. Wenn Sie fertig sind, klicken Sie auf Hinzufügen, um die Konfiguration zu speichern.
Adding an artifact

4. Klicken Sie abschließend auf die Schaltfläche Speichern in der oberen rechten Ecke des Bildschirms, um die Freigabepipeline zu speichern.

Erstellen der Azure DevOps-Freigabe

Sobald die Freigabepipeline erstellt ist, beginnen Sie mit der Erstellung von Freigaben. Eine Freigabe ist ein bestimmter Durchlauf der Pipeline. Denken Sie an die Freigabepipeline als Vorlage und an spezifische Instanzen dieser Freigabepipeline als Freigaben. Sobald Sie eine Freigabe haben, kann diese Freigabe bereitgestellt werden.

Um eine Freigabe zu erstellen:

  1. Klicken Sie auf die Schaltfläche Freigabe erstellen in der oberen rechten Ecke des Fensters, wie unten gezeigt.
New release pipeline overview

2. Da Sie nichts Besonderes tun werden, akzeptieren Sie auf dem Bildschirm Neue Freigabe erstellen die Standardeinstellungen und klicken Sie auf Erstellen. Sie haben derzeit nur eine einzige Stufe und eine einzige Version des zu bereitstellenden Build-Artefakts.

Create a new release item

3. Nach einigen Sekunden erhalten Sie eine Benachrichtigung (die grüne Leiste), dass die Freigabe erstellt wurde, wie unten gezeigt. Klicken Sie jetzt auf Freigabe-1, um zu den Details des Freigabeprozesses weitergeleitet zu werden.

Click on Release-1

Sie haben nun eine Freigabe erstellt und sie ist bereit zur Bereitstellung!

Manuelle Bereitstellung einer Freigabe

A release is a set of instructions to perform on how to deploy a build. You’ve done all of that. Now it’s time to actually run those instructions and deploy code to an environment.

Während Sie sich in der zuvor erstellten Freigabe-1 befinden:

  1. Wählen Sie die Deploy_to_webapp Phase aus und bestätigen Sie Deploy. Wenn Sie dies tun, ändert sich der Status wie unten angezeigt in In Bearbeitung. Zu diesem Zeitpunkt greift die Veröffentlichung den Quellcode aus der zuvor ausgeführten Build-Pipeline ab und schiebt ihn auf die Azure WebApp-Instanz.

    Dieser Schritt löst einen im Hintergrund laufenden Job auf einem Agenten aus, der den Quellcode kopiert und den eigentlichen Veröffentlichungszyklus durchführt.

Stage in progress

2. Klicken Sie auf die laufende Phase. Sie sehen alle Protokollinformationen im Konsolenausgabebereich.

Job log showing stage in progress

Wenn abgeschlossen, sollte die Phase wie unten angezeigt Erfolgreich anzeigen.

Successful stage

Wenn alles gut gelaufen ist, sollte die Veröffentlichung abgeschlossen sein und Sie sollten jetzt eine veröffentlichte Web-App auf einer Azure WebApp haben!

Inspektion der bereitgestellten Azure WebApp

Jetzt, da der gesamte Prozess abgeschlossen ist, überprüfen Sie bitte das Ergebnis Ihrer Arbeit.

  1. Melden Sie sich im Azure-Portal an, navigieren Sie zu der Azure WebApp, die Sie in der Veröffentlichungspipeline als Ziel ausgewählt haben, und kopieren Sie die URL wie unten angezeigt.
Finding the Azure App Service URL in the Azure portal

2. Jetzt fügen Sie diese URL in einen Browser ein, indem Sie die URL der Azure Web App bereitstellen. Ihr Browser sollte nun die Beispielanwendung für E-Commerce laden, ähnlich der unten dargestellten Startseite

The front page of the deployed application

Jetzt haben Sie es geschafft! Sie haben jetzt eine Azure-Web-App bereitgestellt, die aus einem GitHub-Repository automatisiert werden kann!

Aufräumen

Wenn Sie während dieses Projekts Schritt für Schritt vorgegangen sind, haben Sie jetzt eine neue Azure DevOps-Organisation, ein Projekt, eine Build-Pipeline, eine Release-Pipeline und eine Bereitstellung. Wenn Sie mit dem Testen fertig sind, achten Sie darauf, die ursprüngliche erstellte Organisation zu entfernen, um keine Kosten für Azure-Ressourcen zu riskieren.

So geht’s:

  1. Gehen Sie zurück zu Ihrem Haupt-Azure DevOps-Arbeitsbereich.
  2. Klicken Sie unten links auf Organisationseinstellungen.
  3. Auf der Übersichtsseite klicken Sie auf die Schaltfläche Löschen unten auf der Seite unter Organisation löschen.
  4. Geben Sie den Organisationsnamen ein und klicken Sie dann auf Löschen. Dadurch werden alle gerade durchgeführten Arbeiten entfernt.

Ihre Erkenntnisse

Wenn Sie den Anweisungen in diesem Projekt gefolgt sind, haben Sie einen vollständigen CI/CD-Pipeline von Grund auf in Azure DevOps erstellt. Sie sollten jetzt eine gute Vorstellung davon haben, was dieser Prozess beinhaltet.

Azure Pipelines können noch viel weiter gehen als das, was Sie in diesem Projekt getan haben, aber Sie sollten nun über grundlegendes Wissen zum gesamten Prozess verfügen.

Source:
https://adamtheautomator.com/azure-pipelines/