Azure DevOps verstehen und eine CI/CD-Pipeline aufbauen

Active Directory

Illustration von Azure DevOps

Möchten Sie mehr über das Tool erfahren, mit dem sich der gesamte Softwareentwicklungs-Lebenszyklus automatisieren und verwalten lässt? Nun, Azure DevOps ist die Lösung für Sie. Aber bevor wir tiefer darauf eingehen, was Azure DevOps ist und wie es Teams während der Produktentwicklung und -freigabe hilft, lassen Sie uns zunächst versuchen, unser Verständnis für DevOps etwas auszubauen.

DevOps ist eine Kombination aus Entwicklung (Dev) und Betrieb (Ops), die Menschen, Prozesse und Technologie zusammenbringt, um dem Unternehmen kontinuierlich einen Mehrwert zu bieten, indem Geschäftsprozesse schneller und effizienter gestaltet werden. DevOps ermöglicht es den Softwareentwicklungsteams, intelligenter zu planen, besser zusammenzuarbeiten und das Endprodukt in kürzerer Zeit zu liefern, um eine schnellere Markteinführung mit einer Reihe von modernen Diensten zu erreichen.

DevOps ermöglicht es verschiedenen Teams in den Bereichen Entwicklung, IT-Betrieb, Qualitätssicherung sowie Sicherheit, zusammenzuarbeiten, um robustere und zuverlässigere Produkte zu produzieren. Unternehmen, die eine DevOps-Kultur aufbauen, können schnell und effizient auf Kundenanforderungen reagieren. Es gibt heute eine Vielzahl von DevOps-Tools auf dem Markt, die jeweils ähnliche Funktionen aufweisen. Dazu gehören Jenkins, Git, Gitlabs, Github, Bitbuckets usw. Sie bieten bestimmte zusätzliche Funktionen wie Versionskontrolle, Code-Repositories usw. zusammen mit DevOps-Funktionen, aber sie verfügen nicht über die nötigen End-to-End-Kapazitäten zur Verwaltung des Softwareentwicklungs-Lebenszyklus. An dieser Stelle kommt Azure DevOps ins Spiel.

Was ist Azure DevOps?

Azure DevOps wurde im Oktober 2018 eingeführt. Es ist eine Software-as-a-Service-Plattform mit einer umfassenden Reihe von Tools, die nicht nur die DevOps-Funktionen bieten, sondern auch weitere Kapazitäten, mit denen sich der gesamte Produktentwicklungs-Lebenszyklus verwalten lässt.

Einer der besten Aspekte von Azure DevOps ist seine Flexibilität, da es sich auch mit anderen Tools auf dem Markt integrieren lässt, um die Prozessabläufe zu integrieren und die komplette DevOps-Toolchain zu orchestrieren. Dies hilft bei der Nutzung vorhandener Tools, die bereits innerhalb der Organisation verwendet werden. Es gibt drei Hauptgründe, aus denen Azure DevOps im Vergleich zu anderen bestehenden Tools auf dem Markt die Oberhand hat. Das sind:

  1. Flexibilität – Azure DevOps bietet Flexibilität, da jeder der Dienste von Azure DevOps unabhängig verwendet und mit den bestehenden Tools innerhalb der Organisation integriert werden kann, wodurch es leicht angepasst werden kann.
  2. Plattformunabhängigkeit – Obwohl Azure DevOps von Microsoft entwickelt wurde, konzentriert es sich nicht nur auf Microsoft-Plattformen und -Sprachen. Es wurde entwickelt, um mit jeder Plattform (einschließlich Linux, Windows und macOS) und Sprache (einschließlich .Net, Java, PHP, Python, C, C++, iOS, Android und NodeJS) zusammenzuarbeiten.
  3. Cloud-Unabhängigkeit – Das Azure-DevOps-Modell für kontinuierliche Integration und Bereitstellung wird nicht nur für Azure unterstützt, sondern bezieht auch Amazon Web Services (AWS) und die Google Cloud Platform (GCP) mit ein.

Vorteile von Azure DevOps

Abgesehen von den im vorherigen Abschnitt erwähnten Funktionen gibt es drei Hauptvorteile, die Azure DevOps im Vergleich zu anderen Tools mit ähnlichem Umfang bietet:

  1. Zuverlässigkeit – Azure DevOps ist ein SaaS-Angebot, das weltweit verfügbar ist und ein SLA mit 99,9 % Verfügbarkeit verspricht, was es zu einem zuverlässigen DevOps-Tool macht. Außerdem bietet es einfache Skalierbarkeit und Support rund um die Uhr.
  2. Rechtzeitige Patches und Upgrades – Da Azure DevOps ein SaaS-Angebot ist, werden Patching und Upgrades von Microsoft durchgeführt. Dadurch entfällt ein Teil des Aufwands für die IT-Teams und es ist viel einfacher in der Nutzung.
  3. Schnelle Funktions-Upgrades – Die Roadmap für Azure DevOps wurde bereits von Microsoft publiziert und die neuen Funktionen werden schnell veröffentlicht (in der Regel drei Wochen).

Funktionen von Azure DevOps

Wie bereits erwähnt bietet Azure DevOps die Möglichkeit zur End-to-End-Verwaltung des Produktentwicklungs-Lebenszyklus und umfasst die folgenden Dienste.

  1. Azure Boards – Azure Boards ist eine Reihe von Agile-Tools, die die Planung und vollständige Nachverfolgung des Projektentwicklungsfortschritts, der erkannten Defekte sowie anderer Vorgänge unterstützen. D. h. das komplette Projektmanagement kann mit Azure Boards durchgeführt werden. Im Backend umfasst es native Unterstützung für Scrum und Kanban für Agile. Es bietet Dashboards mit integrierten Berichten, die anpassbar sind und die je nach Geschäftsanforderungen skaliert werden können.
  2. Azure Pipelines – da es sich um ein DevOps-Tool handelt, bietet es definitiv Continuous Integration und Continuous Delivery (CI/CD), auch bekannt als CICD-Pipelines, um den Build und die Freigabe der Anwendung von der Entwicklung bis zur Produktion zu unterstützen. Wir werden dies in der Demo in den folgenden Abschnitten in Aktion sehen.
  3. Azure Repos – Azure Repos sind ein Satz von Versionskontrollwerkzeugen, die zur Verwaltung von Codes und deren verschiedenen Versionen durch das Entwicklungsteam verwendet werden können. Es hilft daher bei der Verfolgung der Änderungen, die im Code über einen bestimmten Zeitraum vorgenommen werden, mit verschiedenen Versionen. Wenn die Änderungen am Code vorgenommen werden, erstellt das DevOps-Tool Schnappschüsse der eingecheckten Dateien, damit diese Änderungen nachverfolgt werden können. Diese Schnappschüsse werden dauerhaft gespeichert. Außerdem hilft es bei der Koordination und Zusammenarbeit zwischen Teams, die am selben Projekt arbeiten. Azure Repos bietet zwei Arten der Versionskontrolle. Das sind:
  • Git: verteilte Versionskontrolle
  • Team-Foundation-Versionskontrolle: zentralisierte Versionskontrolle
  1. Azure Artifacts – ermöglicht es den Teams, die Abhängigkeiten und anderen Artefakte, die für die Anwendungsbereitstellung und deren Funktionalität erforderlich sind, einfach zu packen und so die Veröffentlichung und Nutzung der Anwendung zu erleichtern. Es kann verschiedene Arten von Artefakten geben, wie z. B. Build-Artefakte, Maven, Npm, Nuget, PyPI, Universal Packages und Symbols
  2. Azure Test Plans – eine Reihe von umfassenden und leistungsstarken Tools zum Testen Ihrer Anwendung, die manuelle/explorative Tests und kontinuierliche Tests umfassen. Sie sind eine einfach zu bedienende und browserbasierte Testmanagementlösung, die alle für unterschiedliche Testmethoden erforderlichen Funktionen bietet.

Im Wesentlichen handelt es sich bei DevOps um eine Reihe von Verfahren, die alle Phasen des Lebenszyklus der Anwendungsentwicklung beeinflussen, einschließlich Planung, Entwicklung, Bereitstellung und Betrieb, und jede Phase basiert auf den anderen Phasen.

DevOps hilft dabei, die Zeit zwischen dem Commit einer Änderung am System und der Überführung der Änderung in die Produktion nach dem Durchlaufen verschiedener Phasen zu verkürzen und gleichzeitig eine hohe Qualität zu gewährleisten. Diese Praktiken sind Continuous Integration und Continuous Delivery (CI/CD), Versionskontrolle, agile Softwareentwicklung, Infrastructure-as-Code, Konfigurationsmanagement und kontinuierliche Überwachung.

Erstellen und Konfigurieren von CI- und CD-Pipelines mit Azure DevOps

Die Kernfunktionen von Azure DevOps haben wir bereits besprochen. Eine dieser Funktionen ist Azure Pipelines. Ziel von Azure Pipelines sind Continuous Integration (kontinuierliche Integration) und Continuous Delivery (kontinuierliche Lieferung), um den Code fortlaufend zu erstellen, zu testen und schließlich ein hochleistungsfähiges und qualitativ hochwertiges Produkt auszuliefern. Solche Pipelines können entweder über die Benutzeroberfläche oder über die YAML-Syntax definiert werden.

Continuous Integration erzeugt einsatzfähigen Code, Infrastruktur und andere bereitzustellende Artefakte, während Continuous Delivery dabei hilft, den integrierten und erstellten Code in verschiedenen Auslieferungsstufen als neue Versionen des Produkts einzusetzen.

Im folgenden Abschnitt werden wir versuchen, eine CICD-Pipeline mithilfe von YAML zu konfigurieren. Die Pipeline wird in einer YAML-Datei namens azure-pipelines.yml definiert.

Wir werden die folgenden Schritte befolgen, um die CICD-Pipeline zu konfigurieren, für die wir den .Net-Core-Code aus dem folgenden Repository verwenden werden:

https://github.com/MicrosoftDocs/pipelines-dotnet-core

  1. Organisation erstellen
  2. Neues Projekt erstellen
  3. .Net-Core-Pipeline erstellen
  4. Pipeline mit Azure CLI verwalten
    1. Pipeline ausführen
    2. Pipeline aktualisieren
    3. Pipeline anzeigen
  5. Projektdetails aktualisieren
  6. Projektteams hinzufügen/aktualisieren
  7. Berechtigungen prüfen und gewähren

Organisation erstellen

  1. Melden Sie sich über die URL devops.azure.com bei Azure DevOps an 
  2. Klicken Sie auf den Link Neue Organisation, erstellen Sie Ihre Organisation und navigieren Sie zu Ihrem Projekt. Klicken Sie auf Fortfahren, wenn Sie zur Bestätigung der Allgemeinen Geschäftsbedingungen aufgefordert werden.
  3. Geben Sie in dem daraufhin angezeigten Bildschirm den Namen der Organisation, den Standort und das Captcha-Bild ein. Klicken Sie dann auf Weiter.

Neues Projekt erstellen

  1. Nachdem die Organisation angelegt wurde, erhalten Sie eine Bestätigung darüber per E-Mail und werden auf die Seite weitergeleitet, auf der Sie ein neues Projekt anlegen können.
  2. Legen Sie das Projekt an, wie im Screenshot unten gezeigt. Geben Sie den Projektnamen ein, wählen Sie die Sichtbarkeit, und wählen Sie dann auf der Registerkarte „Erweitert“ Git für die Versionskontrolle und Scrum für den Arbeitselement-Prozess
  3. Klicken Sie auf Projekt erstellen
  4. Sie werden anschließend zum Organisations-Dashboard weitergeleitet, in dem das neue Projekt angezeigt wird.

Erstellen Sie die .Net-Core-Pipeline mit einer YAML-Datei

  1. Klicken Sie im Dashboard auf den Projektnamen.
  2. Gehen Sie im nun angezeigten Bildschirm auf Pipelines und wählen Sie dann Neue Pipeline.
  3. Forken Sie, bevor Sie weitermachen, das Repo (https://github.com/MicrosoftDocs/pipelines-dotnet-core) von GitHub
  4. Gehen Sie die Schritte des Assistenten durch, indem Sie zunächst GitHub als Speicherort für Ihren Quellcode auswählen.
  5. Sie werden aufgefordert, den Zugriff von Azure Pipelines auf Ihr GitHub-Repository zu autorisieren. Möglicherweise werden Sie auch zu GitHub weitergeleitet, um sich anzumelden. Geben Sie in diesem Fall Ihre GitHub-Anmeldedaten ein.
  6. Klicken Sie auf AzurePipelines autorisieren
  7. Hier wird der Name des Repository angezeigt, das Sie in den vorherigen Schritten geforkt haben.
  8. Wählen Sie Ihr Repository aus, wenn die Liste der Repositories angezeigt wird.
  9. Sie werden möglicherweise zu GitHub weitergeleitet und aufgefordert, die Azure-Pipelines-App zu installieren. Gehen Sie in diesem Fall auf Genehmigen und installieren.
  10. Wenn die Registerkarte Konfigurieren angezeigt wird, wählen Sie ASP.NET Core
  11. Nachdem Ihre Pipeline nun als YAML-Datei angezeigt wird, können Sie sich diese ansehen. Klicken Sie anschließend auf Speichern und ausführen.
  12. Es erscheint ein Popup, in dem Sie Ihre Nachricht eingeben können, bevor Sie die Pipeline speichern. Nachdem Sie die Nachricht eingegeben haben, klicken Sie erneut auf Speichern und ausführen. Nun können Sie erst einmal in den Master-Branch  commiten.
  13. Die grundlegende Pipeline ist nun fertig und kann zum Erstellen und Ausführen des Codes verwendet werden. Nachdem die Pipeline bereitgestellt wurde, sehen Sie den folgenden Bildschirm.
  14. Sie erhalten möglicherweise die folgende Fehlermeldung: „Es wurde kein gehosteter Parallelismus erworben oder gewährt. Um eine kostenlose Parallelismusgewährung anzufordern, füllen Sie bitte das folgende Formular aus https://aka.ms/azpipelines-parallelism-request

Das liegt daran, dass Microsoft die Richtlinie geändert hat, um die kostenlose Stufe eines gehosteten Agentpools für öffentliche und private Projekte neu erstellter DevOps-Organisationen zu ermöglichen. Das geschah mit der Begründung, dass viele diese Funktion missbrauchen, indem sie eine riesige Menge an Datenverkehr über diese gehosteten Agentpools senden.

Um das Problem und den Fehler zu beheben, öffnen Sie den in der Fehlermeldung angegebenen Link und geben Sie die im Formular abgefragten Details ein, um die Genehmigung von Microsoft zu erhalten. Das Beispielformular wird unten angezeigt

Weitere Informationen zu diesem Fehler finden Sie unter https://devblogs.microsoft.com/devops/change-in-azure-pipelines-grant-for-private-projects/

Sobald die Genehmigung von Microsoft erteilt wurde, erhält der Administrator eine E-Mail-Bestätigung darüber. Sie können dann die Build-Pipeline erneut ausführen. Nachdem der Build in die Warteschlange gestellt und gestartet wurde, sehen Sie den folgenden Bildschirm. 

Nach Abschluss des Vorgangs erhalten Sie eine Erfolgs- oder Fehlermeldung, wie unten dargestellt. Der Administrator erhält außerdem eine E-Mail-Bestätigung über die erfolgreiche bzw. fehlgeschlagene Ausführung des Build. 

Pipeline mit Azure CLI verwalten

Azure Pipelines können auch mit Azure CLI verwaltet werden. Dafür müssen Sie den Befehl „az pipelines“ verwenden.

  • Führen Sie die Pipeline aus – Um die vorhandene Pipeline auszuführen, verwenden Sie den Befehl „az pipelines run“.

az pipelines run –name neerajks77.pipelines-dotnet-core –branch master –output table

  • Vorhandene Pipeline aktualisieren – Um eine vorhandene Pipeline zu aktualisieren, verwenden Sie den Befehl „az pipelines update“.

az pipelines update –name neerajks77.pipelines-dotnet-core –description “rename this pipeline” –new-name varonis.pipelines-dotnet-core –output table

  • Anzeigen der Details der vorhandenen Pipeline – Um die Details der vorhandenen Pipeline anzuzeigen, verwenden Sie den Befehl „ az pipelines show“.

az pipelines show –name neerajks77.pipelines-dotnet-core –output table

Projektdetails aktualisieren

Gegebenenfalls möchten Sie auch die Projektdetails aktualisieren, z. B. den Namen, die Beschreibung, den Prozess und sogar die Sichtbarkeit. Führen Sie dazu die folgenden Schritte aus.

  1. Klicken Sie unten links im Menü auf der linken Seite auf Projekteinstellungen.
  2. Sie werden zur Übersichtsseite der Projekteinstellungen weitergeleitet. Hier können Sie die Projektdetails, Teams, Berechtigungen und andere Einstellungen in Bezug auf die Projekte verwalten. Dazu gehören – Boards, Pipelines, Repos, Artefakte und Tests.
  3. Um die Projektdetails zu ändern, klicken Sie auf die Seite „Übersicht“, um diese zu öffnen. Hier können Sie den Namen, die Beschreibung und die Sichtbarkeit des Projekts ändern. Der Prozess kann nicht geändert werden. 
  4. Um weitere Administratoren zu Ihrem Projekt hinzuzufügen, klicken Sie unter „Projektadministratoren“ auf die Schaltfläche Administratoren hinzufügen. 
  5. Falls Sie die Azure-DevOps-Dienste wie Boards, Repos, Pipelines, Testpläne oder Artefakte aktivieren oder deaktivieren möchten, scrollen Sie zum unteren Rand der Übersichtsseite der Projekteinstellungen und legen Sie den Schalter neben den Diensten um, um sie zu aktivieren oder zu deaktivieren.

Projektteams hinzufügen/aktualisieren

Möglicherweise möchten Sie ein neues Team hinzufügen oder Mitglieder zu einem bestehenden Team hinzufügen. Gehen Sie dazu wie unten beschrieben vor.

  1. Klicken Sie auf den Link Teams unter „Allgemeine Einstellungen“. Dadurch wird die Liste der bestehenden Teams im Projekt geöffnet.
  2. Klicken Sie auf die Schaltfläche Neues Team, um das neue Team hinzuzufügen.
  3. Um Teammitglieder zum bestehenden Team hinzuzufügen, klicken Sie auf den Namen des Teams.
  4. Klicken Sie auf dem angezeigten Bildschirm auf die Schaltfläche Hinzufügen, um ein neues Teammitglied hinzuzufügen.
  5. Um ein Teammitglied aus dem Team zu entfernen, wählen Sie einen Benutzer aus und klicken Sie dann auf die Schaltfläche Entfernen.

Berechtigungen prüfen und gewähren

Führen Sie die folgenden Schritte aus, um die Berechtigungen der Benutzer zu prüfen und sie ihnen zu erteilen.

  1. Klicken Sie im Menü auf der linken Seite unter „Allgemein“ auf den Link Berechtigungen und dann auf „Benutzer“.
  2. Klicken Sie in der Liste der Benutzer auf den Namen der Benutzer, für die Sie Berechtigungen hinzufügen/aktualisieren möchten.
  3. Auf dem angezeigten Bildschirm können Sie für jedes einzelne funktionale Element unter jedem Azure-DevOps-Dienst Berechtigungen erteilen oder entziehen.
  4. Sie können die Mitgliedschaft des Benutzers auch überprüfen und hinzufügen, indem Sie auf die Registerkarte Mitglied von und dann auf die Schaltfläche Hinzufügen  klicken.

Übersicht

Azure DevOps hilft mit seinen Tools beim Aufbau einer Kultur, die die Teams für die Anwendungsentwicklung, die Projektmanager und andere Beteiligte wie die Qualitätssicherung und die Betriebsteams zusammenbringt, um ihre Arbeit zu planen und gemeinsam an der Anwendungsentwicklung zu arbeiten. So können diese Teams sich koordinieren und zusammenarbeiten, um qualitativ hochwertige und zuverlässige Produkte herzustellen. Mit DevOps haben die Teams die Möglichkeit, schnell auf Kundenanforderungen zu reagieren. Es ist daher ratsam für die Organisationen, die DevOps-Kultur so früh wie möglich einzuführen, um qualitativ hochwertige Produkte mit kürzeren Markteinführungszeiten zu liefern.

Avatar

Neeraj Kumar

Neeraj ist ein Azure-Enthusiast, Unternehmensarchitekt und Leiter des technischen Programms. Mit 21 Jahren Erfahrung in der IT-Branche leitet Neeraj High-End-Programme, die sich auf digitale und Cloud-Services konzentrieren, indem er Lösungen für Azure Cognitive Services, Data Science, IoT, Cloud-Migrationen etc. entwirft und entwickelt, um Unternehmen durch Maximierung ihres RoI zu unterstützen. Neeraj ist ein zertifizierter Azure-Architekt und -Administrator und entwickelt mit Leidenschaft Kurse zu echten Problemlösungen in Azure, um Unternehmen und Lernenden bei ihren Cloud-Tätigkeiten zu helfen.

 

Möchten Sie Varonis in Aktion erleben?

Vereinbaren Sie eine Demo oder wenden Sie sich an unseren Vertrieb unter +49 89 3803 7990