Direkt zum Inhalt

Azure Pipelines Tutorial: Ein vollständiger CI/CD-Leitfaden für Einsteiger

Dieses Tutorial führt dich durch das Einrichten, Ausführen und Optimieren von CI/CD-Workflows mit Azure Pipelines.
Aktualisierte 30. Mai 2025  · 15 Min. Lesezeit

Wenn deine CI/CD-Pipeline ständig zusammenbricht oder sich langsam und schwerfällig anfühlt, bist du nicht allein. Ich hatte schon mit fehlgeschlagenen Builds, nicht passenden Umgebungen und Teamkollegen zu tun, die versehentlich meine Arbeit überschrieben haben. Azure Pipelines beseitigt diese Frustrationen mit einem in der Cloud gehosteten Dienst, mit dem fast jedes Projekt auf jeder Plattform erstellt, getestet und bereitgestellt werden kann.

Deshalb zeige ich dir in diesem Tutorial, wie du das machst:

  1. Erstelle deine erste Azure Pipeline
  2. Baue dein Projekt in der Cloud
  3. Füge automatisierte Tests hinzu, um Fehler frühzeitig zu erkennen
  4. Bereitstellung in Staging oder Produktion mit einem einzigen Push
  5. Überwache und optimiere deine Pipeline für Geschwindigkeit und Zuverlässigkeit
  6. Befolge bewährte Praktiken, die sich in realen Projekten bewährt haben

Lass uns loslegen!

Was sind Azure Pipelines?

Azure Pipelines ist eine Cloud-basierte Lösung, die die Entwicklung, das Testen und die Bereitstellung von Anwendungen vereinfacht. 

Es ist eine Komponente des Azure DevOps-Toolkits, das den gesamten Lebenszyklus der Softwareentwicklung unterstützt. Außerdem ist es eine flexible Option für Teams jeder Größe, da es verschiedene Plattformen und Programmiersprachen unterstützt. GitHub, Azure Repos und andere bekannte Versionskontrollsysteme sind darin integriert. 

Zu den wichtigsten Funktionen von Azure Pipelines gehören: 

Service

Zweck

Multiplattform-Unterstützung

Azure Pipelines automatisiert die Erstellung und Bereitstellung von Anwendungen für verschiedene Betriebssysteme, wie Linux, macOS und Windows.

Integration mit Versionskontrolle

Azure Pipelines verbinden sich mit deinen Code-Repositories wie Azure Repos, GitHub und anderen bekannten Versionskontrollsystemen.

YAML-basierte Pipeline-Konfiguration

Mit Azure Pipelines können wir unsere Build- und Deployment-Prozesse als Code definieren und so Versionskontrolle ermöglichen.

Kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD)

Azure Pipelines erleichtert den End-to-End-Prozess der Integration von Codeänderungen und der Bereitstellung von Anwendungen.

Meiner Erfahrung nach sind Azure Pipelines für alle hilfreich, die proper CI/CD in ihrem Team haben wollen. Sie ist flexibel, skalierbar und lässt sich gut mit anderen Azure-Diensten integrieren.

Die Azure Pipelines Architecture ist eine Einrichtung, die den Prozess der Erstellung, des Testens und der Bereitstellung von Code automatisiert. Es beginnt damit, dass Entwickler ihre Codeänderungen in ein Repository einspeisen. Das System führt dann eine Reihe von automatisierten Aufgaben aus, wie z. B. Code-Linting, Erstellung und Testen. Sobald diese Aufgaben abgeschlossen sind, wird der Code in verschiedenen Umgebungen wie Staging und Produktion bereitgestellt. Diese Architektur stellt sicher, dass Codeänderungen konsistent und zuverlässig bereitgestellt werden, und hilft den Teams dabei, qualitativ hochwertige Software zu entwickeln.

Azure Pipelines Architektur (Quelle: Microsoft).

Wenn du ein breiteres Verständnis von Azure DevOps über Pipelines hinaus suchst, ist dieses Azure DevOps-Tutorial waden gesamten CI/CD-Lebenszyklus von Anfang bis Ende durch.

Deine erste Azure Pipeline einrichten

Um mit der Azure Pipelines-Umgebung zu arbeiten, müssen wir zunächst alles so einrichten, dass ein durchgängiger Build-, Test- und Deployment-Prozess möglich ist.

Voraussetzungen

Bevor du mit der Erstellung deiner ersten Pipeline beginnst, solltest du sicherstellen, dass du die folgenden Punkte beachtet hast:

  1. Azure DevOps Konto und Organisation einrichten: Melde dich füroder einen Azure DevOps-Accountan, wenn du noch keinen hast. Erstelle eine Organisation, um deine Projekte zu verwalten. 
  2. Repository: Du brauchst ein Code-Repository mit einem Beispielprojekt. Diese kann in Azure Repos oder GitHub gehostet werden. Für dieses Tutorial verwenden wir ein einfaches Node.js-Projekt.
  3. Zugang zum Azure-Portal: Du brauchst auch Zugang zudem Azure-Portal, wenn du Azure-Dienste wie Azure Kubernetes Service (AKS) und viele andere nutzen willst.

Wenn du dich über das Azure-Ökosystem informieren möchtest, empfehle ich dir den Kurs "Microsoft Azure verstehen"

Ein neues Projekt und Repository erstellen

Jetzt, wo dein Azure DevOps-Konto und deine Organisation eingerichtet sind, können wir unser erstes Projekt und Repository erstellen.

  • Erstelle ein neues Projekt:
    • Melde dich bei deinem Azure DevOps-Konto an.
    • Klicke auf Neues Projekt, gib ihm einen Namen (z. B. "AzureDevOps-DataCamp-Tutorial") und wähle die Sichtbarkeit (öffentlich oder privat).
    • Klicke auf Projekt erstellen.

Das Einrichten eines neuen Projekts in Azure DevOps ist ganz einfach:

Gib die Projektdetails ein, darunter den Projektnamen, eine kurze Beschreibung und lege die Sichtbarkeit fest (öffentlich oder privat).

Klicke schließlich auf "Projekt erstellen", um loszulegen.

  • Richte ein Repository ein:
    • Wenn du Azure Repos verwendest, navigiere zum AbschnittRepos und initialisiere ein neues Repository.
    • Alternativ kannst du ein bestehendes GitHub-Repository verknüpfen, indem du Repository importieren wählst.
    • Benenne dein Repository, wähle deinen Repository-Typ (Git oder TFVC), füge die URL deines geklonten Repositorys ein und klicke auf Importieren.

Die Wahl eines Versionskontrollsystems ist für die Verwaltung deines Codes in Azure Pipelines unerlässlich. Hier sind zwei Optionen:

Git: Ein verteiltes Versionskontrollsystem, das modern ist und in der Entwicklergemeinschaft weit verbreitet ist. Es ist die beste Wahl für die meisten Projekte.

TFVC (Team Foundation Version Control): Ein zentrales Versionskontrollsystem, das weniger verbreitet ist und oft in älteren Projekten eingesetzt wird.

Dieses intuitive Layout hilft dir zu entscheiden, welches System am besten zu den Anforderungen deines Projekts passt.

  • Wenn du GitHubverwendest, kannst du dein GitHub-Konto mit Azure DevOps verknüpfen, indem du unten links in deiner Projektoberfläche auf Projekteinstellungen > GitHub-Verbindungen > Verbinde dein GitHub-Konto.

Die Abbildung zeigt, wie du ein GitHub-Konto mit Azure DevOps verknüpfst, indem du zu den Projekteinstellungen in der unteren linken Ecke der Benutzeroberfläche navigierst.

Danach wählst du GitHub-Verbindungen aus.

Zum Schluss klickst du auf "Verbinde dein GitHub-Konto".

Für dieses Tutorial verwenden wir Azure Repos als Code-Repository. Wenn du gerade erst anfängst oder keinen bestimmten Grund hast, dich für TFVC zu entscheiden, rate ich dir, Git zu wählen.

Erstellen deiner ersten Pipeline

Es ist an der Zeit, unsere erste Pipeline zu erstellen. Befolge die folgenden Schritte:

  • In deinen Pipelines Abschnitt, klicken Sie auf Pipeline erstellen.

Navigiere zum Abschnitt Pipelines in deinem Azure DevOps-Projekt:

Öffne dein Azure DevOps-Projekt.

Klicke im Menü auf der linken Seite auf Pipelines.

In diesem Bereich kannst du deine Build- und Release-Pipelines effizient verwalten.

Klicke auf Pipeline erstellen, um eine neue Pipeline einzurichten.

Dieser einfache Schritt hilft dir, den Prozess der Automatisierung deiner Arbeitsabläufe in Azure DevOps zu beginnen.

  • Wähle Azure Repos Git als Quelle und wähle dein Repository aus.

Wähle eine Quelle für deine Pipeline:

Wähle Azure Repos Git als deine Quelle.

Wähle dann das Repository aus, mit dem du arbeiten möchtest.

Dieser einfache Prozess stellt sicher, dass du das richtige Code-Repository mit deiner Pipeline verbindest, um sie effizient zu verwalten.

  • Du kannst deine Pipeline mit dem YAML- oder Classic-Editor konfigurieren. Nehmen wir YAML, eine codebasierte Methode, um die Pipeline zu definieren.
  • Speichere die Pipeline und führe sie aus, um zu sehen, ob alles richtig funktioniert.

Die Wahl zwischen YAML und dem klassischen Editor

Azure Pipelines bietet zwei Möglichkeiten, deine Pipelines zu definieren:

  • YAML-Pipelines: Eine codebasierte Möglichkeit, deine Pipeline zu beschreiben. Sie werden in einer .yaml oder .yml Datei in deinem Quellcode-Repository definiert, was die Versionierung und bessere Zusammenarbeit ermöglicht.
  • Classic Editor: Der Classic Editor ist eine benutzerfreundliche, visuelle Drag-and-Drop-Oberfläche, die weniger flexibel für komplexe Szenarien ist.

Aspekt

YAML Pipelines

Klassischer Editor

Versionskontrolle

YAML-Pipelines unterstützen die Versionskontrolle und werden im Quellcode-Repository gespeichert.

Der Classic Editor unterstützt keine Versionskontrolle. Es ist eine grafische Benutzeroberfläche (GUI).

Flexibilität

YAML-Pipelines bieten ein Höchstmaß an Flexibilität.

Der Classic Editor ist nur begrenzt flexibel.

Am besten für

YAML-Pipelines eignen sich am besten für langfristige, komplexe Arbeitsabläufe und Automatisierung.

Der Classic Editor eignet sich am besten für schnelle Einrichtungsarbeiten.

Meiner Erfahrung nach bieten YAML-Pipelines mehr Flexibilität und sind besser für Teams geeignet, dieInfrastructure as Code (IaC) Praktiken ermöglichen. Aber der Classic Editor ist perfekt für alle, die eine visuellere Herangehensweise bevorzugen. 

Für eine langfristige Skalierbarkeit sind YAML-Pipelines jedoch dem klassischen Editor vorzuziehen.

Bauen mit Azure Pipelines

Jetzt wollen wir sehen, wie wir mit Azure Pipelines bauen können. 

In diesem Abschnitt legen wir die Schritte fest, die Azure Pipelines unternimmt, um deinen Code zu erstellen, z. B. die Installation von Abhängigkeiten, die Kompilierung und die Durchführung von Tests. Wir werden diese Schritte in einer Konfigurationsdatei in unserem Quellcode-Repository mit YAML ausdrücken, einer einfachen, für Menschen lesbaren Methode, um Schritte in einem Rezept zu beschreiben.

YAML-Pipeline-Syntax

Hier ist ein einfaches Beispiel für eine YAML-Pipeline:

# This section defines the trigger(s) for the pipeline.
# 'main' specifies that the pipeline will run whenever changes are pushed to the 'main' branch.
trigger:
- main  # automatically triggers this pipeline when changes are made to the 'main' branch.

# This defines the pool where the pipeline will run.
# 'ubuntu-latest' specifies the virtual machine image for executing tasks.
pool:
  vmImage: 'ubuntu-latest'  # This uses the latest Ubuntu image provided by Azure DevOps.

# Steps contain the individual tasks or actions that the pipeline will execute.
steps:
- script: echo Hello, world!  # A script task to run shell commands. This one prints "Hello, world!".
  displayName: 'Run my first pipeline script'  # A friendly name for this step, making it easier to identify in the pipeline logs.

Lass uns den Code Schritt für Schritt aufschlüsseln:

  • trigger: Gibt den Zweig an, der die Pipeline auslöst (z. B. main).
  • pool: Legt den Build-Agenten fest (z. B. ubuntu-latest).
  • steps: Listet die auszuführenden Aufgaben auf, z. B. die Installation von Abhängigkeiten und die Ausführung eines Build-Skripts.

Konfigurieren der Build-Schritte

Um deiner YAML-Pipeline Build-Schritte hinzuzufügen, musst du das "Skript" unter dem Abschnitt "Schritte" definieren.

Für eine einfache Node.js Anwendung zum Beispiel enthält unsere azure-pipelines.yml Datei unten Code, den Azure DevOps automatisch erstellt hat.

# Node.js
# Build a general Node.js project with npm.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '20.x'
  displayName: 'Install Node.js'

- script: |
    npm install
    npm run build
  displayName: 'npm install and build'

Werfen wir einen Blick auf den Build steps in der obigen YAML-Pipeline: 

  1. Installiere Node.js: Verwende die Aufgabe NodeTool@0, um die Node.js-Version anzugeben. 
  2. Installiere die Abhängigkeiten: Führe npm install aus, um die Projektabhängigkeiten zu installieren. 
  3. Kompiliere den Code (baue das Projekt): Führe npm run build aus, um den Code zu kompilieren. 

Betrieb der Pipeline

Unsere Pipeline kann manuell ausgelöst oder so eingestellt werden, dass sie automatisch läuft, wenn Ereignisse wie Branch-Pushes eintreten.

  • Manueller Auslöser: Klicke auf Run Pipeline in der Azure DevOps-Oberfläche, um die Pipeline manuell auszulösen.

Die Schaltfläche Pipeline ausführen in der Azure DevOps-Benutzeroberfläche dient zum manuellen Starten der Pipeline-Ausführung.

  • Automatischer Auslöser: Richte Trigger ein, die auf Repository-Ereignissen basieren, um Änderungen in den Zweig main zu verschieben und die Pipeline automatisch auszulösen. Hier ist ein Beispiel:
trigger:
- main

Nachdem du deine Pipeline ausgeführt hast, kannst du die Protokolle einsehen und eventuelle Probleme beheben.

Um auf die Protokolle zuzugreifen, gehst du zur Zusammenfassung deines Pipeline-Laufs und wählst den entsprechenden Job oder die Aufgabe aus. Wie in der Abbildung unten kannst du jeden Job (Build, Push oder Update) auswählen, um die Rohprotokolle zu sehen.

Zusammenfassung des Pipeline-Laufs mit Job-Optionen (Build, Push, Update), um auf Rohprotokolle für jeden Schritt zuzugreifen.

Zusammenfassung des Pipeline-Laufs mit Job-Optionen (Build, Push, Update), um auf Rohprotokolle für jeden Schritt zuzugreifen.

Um häufige Probleme zu beheben, kannst du deine Pipeline auf häufige Probleme wie Zeitüberschreitungen, Ressourcenbeschränkungen oder Fehlkonfigurationen überprüfen.

Hinzufügen von Tests zu deiner Pipeline

Du fügst deiner Pipeline Tests hinzu, um die Qualität des Codes zu sichern und Probleme in der Entwicklung frühzeitig zu erkennen. In Azure Pipelines kannst du Unit-, Integrations- oder andere Tests integrieren, indem du Schritte in deiner Pipeline-Konfiguration hinzufügst.

Prüfschritte konfigurieren

Baue Testschritte in deine Pipeline ein, um die Codequalität zu gewährleisten. Du kannst beliebte Frameworks wie Jest, Mocha oder NUnit verwenden. Hier siehst du zum Beispiel, wie du mit Jest Unit-Tests hinzufügst:

- script: |
    npm test
  displayName: 'Run unit tests with Jest'

Testergebnisse anzeigen

In Azure Pipelines gibt es eine integrierte Testberichterstattung. Du kannst die Veröffentlichung von Testergebnissen für eine einfachere Nachverfolgung einrichten und die Testergebnisse in den Pipeline-Protokollen einsehen. So geht's:

  • Navigieren Sie zunächst zu Builds > Testergebnisse.
  • Um Testergebnisse zu veröffentlichen, verwende die Aufgabe PublishTestResults@2, um die Ergebnisse anzuzeigen. Das macht den Lernpfad insgesamt einfacher. Zum Beispiel:
- task: PublishTestResults@2
  inputs:
    testResultsFiles: '**/test-results.xml'
    testRunTitle: 'Unit Tests'

Bereitstellen mit Azure Pipelines

In den Bereitstellungsschritten in deiner Azure-Pipeline-YAML-Datei kannst du deine Anwendung automatisch in verschiedenen Umgebungen bereitstellen, z. B. in der Test-, Staging- und Produktionsumgebung. In diesem Abschnitt gehen wir auf einige Möglichkeiten der Bereitstellung mit Azure Pipelines ein.

Bereitstellen in Azure Web Apps

Azure Web Apps ist ein Dienst im Azure Portal, mit dem du Webanwendungen in großem Umfang entwickeln, bereitstellen und verwalten kannst. 

Für die Bereitstellung in Azure Web Apps musst du die beiden Dienste miteinander verknüpfen. So geht's:

  • Gehe unten links in deinem Projekt auf Projekt-Einstellungen und klicke auf . Dienst-Verbindungen unter den Pipelines Abschnitt.

Die Azure DevOps-Oberfläche zeigt unten links die Option Projekteinstellungen, um Azure-Dienste zu verknüpfen.

Navigiere zum Abschnitt Pipelines:

Klicke unter dem Abschnitt Pipelines auf Service Connections.

Dieser Schritt hilft dir, dich mit Azure Services zu verbinden und so die Möglichkeiten und Integrationen deines Projekts zu verbessern.

  • Klicke auf Neue Serviceverbindung und wählen Sie Azure Ressourcen-Manager.

Richte eine neue Serviceverbindung ein:

Klicke auf Neue Dienstverbindung.

Dieser einfache Prozess hilft dir, dich mit Azure-Ressourcen zu verbinden und die Möglichkeiten deines Projekts zu erweitern.

Richte eine neue Serviceverbindung ein:

Wähle Azure Resource Manager.

Dieser einfache Prozess hilft dir, dich mit Azure-Ressourcen zu verbinden und die Möglichkeiten deines Projekts zu erweitern.

  • Authentifiziere dich mit deinem Azure-Konto.
  • Stelle den Azure App Service bereit:
    • Gehe zurück zu deinen Pipelines und konfiguriere deine Pipeline.
    • Füge in deiner Pipeline eine Aufgabe zur Bereitstellung in Azure hinzu.
    • Gib die Ressourcengruppe und die Dienstdetails an. 

Hier ist ein Beispiel für eine YAML-Bereitstellungspipeline für eine einfache Node.js App für Azure App Service:

# Define the task for deploying to an Azure Web App
- task: AzureWebApp@1
  inputs:
    # This specifies your Azure subscription service connection
    azureSubscription: 'your-azure-subscription'
    # This specifies the name of your web app
    appName: 'your-app-name'
    # This specifies the location of the app package or files to be deployed
    package: '$(Build.ArtifactStagingDirectory)'

Lass uns den obigen Code aufschlüsseln, damit du ihn für deinen Anwendungsfall anpassen kannst:

  • Ersetze your-azure-subscription durch den Namen der Serviceverbindung, die den Zugang zu deinem Azure-Abonnement ermöglicht.
  • Ersetze your-app-name durch den tatsächlichen Namen deiner Web-App in Azure. 
  • Ersetze $(Build.ArtifactStagingDirectory) durch das Verzeichnis, in dem das Web-App-Paket oder die Dateien für die Bereitstellung abgelegt werden sollen. $(Build.ArtifactStagingDirectory) - Diese Variable verweist auf den Ordner, in dem sich deine Build-Artefakte (deine App-Dateien) befinden, nachdem sie erstellt worden sind.

Einrichten der kontinuierlichen Bereitstellung (CD)

Wenn unser Code alle Tests und Prüfungen bestanden hat, müssen wir als Nächstes unser Continuous Deployment einrichten. Befolge die unten beschriebenen Schritte.

Das Azure Release Pipeline-Modell zeigt die Artefaktquellen, die in die Release Pipeline für die Bereitstellung einfließen.

Azure Release Pipeline Deployment Model (Quelle: Microsoft)

  • Erstelle eine Release-Pipeline:
    • Gehe zu Pipelines > Freigaben und klicke auf Neue Pipeline.

Die Azure DevOps-Oberfläche zeigt den Weg zur Erstellung einer Release-Pipeline, indem du zu Pipelines > Releases navigierst und Neue Pipeline auswählst.

Das Erstellen einer Release-Pipeline in Azure DevOps ist ganz einfach:

Navigiere im linken Menü zum Abschnitt Pipelines.

Klicke auf Releases.

Wähle dann Neue Pipeline, um deinen Freigabeprozess einzurichten.

Diese benutzerfreundliche Oberfläche hilft dir, deine Freigabe-Workflows effizient zu verwalten und zu automatisieren.

  • Wählen Sie die Azure App Service-Bereitstellung Vorlage.

Die Azure DevOps-Oberfläche zeigt die Option, die Azure App Service Deployment-Vorlage für die Einrichtung der Release-Pipeline auszuwählen.

  • Konfiguriere die Umgebungen:
    • Hinzufügen und konfigurieren Dev, Staging, QA, und Produktion Umgebungen, in denen deine Anwendung eingesetzt werden soll.

Die Azure DevOps-Oberfläche zeigt konfigurierte Umgebungen wie Dev, Staging, QA und Production für die Anwendungsbereitstellung.

  • Verknüpfe das Artefakt aus deiner Build-Pipeline als Quelle für die Release-Pipeline, indem du Artefakt hinzufügen.

Die Azure DevOps-Oberfläche zeigt die Option, ein Artefakt aus der Build-Pipeline als Quelle für die Einrichtung der Release-Pipeline hinzuzufügen.

  • Konfiguriere Genehmigungen und Gates:
    • Für sensible Umgebungen, wie z.B. Produktionsumgebungen, ist es notwendig, Genehmigungen vor der Bereitstellung zu erteilen. Zum Beispiel kann es sein, dass ein Teamleiter die Freigabe genehmigen muss. Du kannst auch Gates wie automatische Tests oder Überwachungsprüfungen hinzufügen, um sicherzustellen, dass die Bereitstellung den Qualitätsstandards entspricht.

Meiner Erfahrung nach ist diese Phase notwendig, um die Stabilität in anspruchsvollen Entwicklungsumgebungen zu erhalten. Genehmigungen und Gates sorgen für Kontrolle und stellen sicher, dass nur qualitativ hochwertiger Code in die Produktion gelangt.

Bereitstellung in Kubernetes

Kubernetes macht es einfach, zuverlässige und skalierbare containerisierte Anwendungen zu betreiben. Mit dem Azure Kubernetes Service (AKS) erhältst du eine verwaltete Umgebung, die die Bereitstellung und den Betrieb vereinfacht. In diesem Abschnitt zeige ich dir, wie du deine Anwendung mithilfe von Azure Pipelines in AKS bereitstellst.

Bereite deinen AKS-Cluster vor

Du kannst einen AKS-Cluster über das Azure-Portal oder die CLI erstellen. Hier ist ein einfacher Bash CLI-Befehl zum Bereitstellen von Clustern:

az aks create \
  --resource-group <ResourceGroupName> \
  --name <AKSClusterName> \
  --node-count 3 \
  --enable-addons monitoring \
  --generate-ssh-keys

Lasst uns den obigen Befehl aufschlüsseln:

  • --resource-group: Dies gibt die Azure-Ressourcengruppe an, in der der AKS-Cluster erstellt werden soll.
  • --name: Dies bezieht sich auf den Namen deines AKS-Clusters.
  • --node-count: Hier wird die Anzahl der Knoten im Cluster festgelegt (z. B. 3 in diesem Beispiel).
  • --enable-addons monitoring: Das macht die Überwachung und Analyse mit Azure Monitor for Containers möglich.
  • --generate-ssh-keys: Dadurch werden automatisch SSH-Schlüssel für den sicheren Zugang zum Knotenpunkt generiert, falls keine Angaben gemacht werden.

Vergiss nicht, und durch die tatsächlichen Namen deiner Ressourcengruppe und deines Clusters zu ersetzen.

Kubectl muss konfiguriert werden, nachdem dein AKS-Cluster eingerichtet wurde. Dadurch wird sichergestellt, dass dein Pipeline-Agent oder dein lokaler Computer kubectl verwenden kann, um mit dem Cluster zu kommunizieren.

Du kannst deine Azure-Aufgaben mit Hilfe der Kommandozeile beschleunigen, umols - dieser Azure CLI-Spickzettel ist eine praktische Referenz.

Erstelle eine YAML-Datei für die Bereitstellung 

Nehmen wir als Beispiel eine einfache Deployment-YAML-Datei für das Deployment eines Docker-Images in Kubernetes:

# This defines the API version and the kind of Kubernetes resource we are creating.
# 'apps/v1' is the API version, and 'Deployment' is the resource type.
apiVersion: apps/v1
kind: Deployment

# Metadata contains information to identify the resource uniquely.
# 'name' specifies the name of the Deployment.
metadata:
  name: my-app  # Name of the Deployment, used for identification.

# "spec" specifies the intended deployment state.
spec:
  # Number of replicas/pods we want for this Deployment.
  replicas: 3  # Ensures high availability by running three app replicas.

  # Selector is used to define the labels that this Deployment will manage.
  selector:
    matchLabels:
      app: my-app  # This ensures that only Pods with the label 'app: my-app' are managed by this Deployment.

  # Template specifies the blueprint for the pods created by the Deployment.
  template:
    metadata:
      labels:
        app: my-app  # Labels for the Pods, matching the selector above.

    # A specification for the containers of the Pods.
    spec:
      containers:
      - name: my-app  # Name of the container. This is useful for linking to the container in logs, etc.
        image: mycontainerregistry.azurecr.io/my-app:latest  # Pull the container image you will call from your container registry.
        ports:
        - containerPort: 80  # The container listens on port 80.

Bereitstellen mit Azure Pipelines

Füge in deine YAML-Pipeline eine Aufgabe für die Verteilung an AKS ein.

# This defines a task for deploying Kubernetes manifests within an Azure DevOps pipeline.
- task: KubernetesManifest@0  # Task type for working with Kubernetes manifest files.
  inputs:
    # This configures what to do with the Kubernetes manifest files.
    action: 'deploy'  # 'deploy' action ensures the Kubernetes manifests are applied to the cluster.

    # This defines the namespace where the Kubernetes resources will be deployed.
    namespace: 'default'  # 'default' is the namespace for deploying resources. Change if needed.

    # All this does is point to the manifest files that define the desired state of your Kubernetes resources.
    manifests: '$(Build.ArtifactStagingDirectory)/manifests/*.yaml'
    # The 'manifests' variable points to the location of all the YAML files (e.g., Deployment, Service, etc.) that will be applied during the deployment.

    # To access private container registry images, use the image pull secret.
    imagePullSecrets: 'my-registry-secret'
    # This instructs Kubernetes on which secret to use when pulling images from a private container registry.
    # Ensure that 'my-registry-secret' exists in the namespace before the deploy

Commit und push die YAML-Datei, um das Deployment auszulösen.

AKS vereinfacht die Container-Orchestrierung und erleichtert die Verwaltung von Skalierung, Updates und Rollbacks. Meiner Erfahrung nach ist es ein Muss für moderne Cloud-native Anwendungen.

Werde Azure AZ-900 zertifiziert

Bereite dich auf Azure's PL-300 vor und erhalte 50% Rabatt auf die Prüfungsgebühr.
Zertifiziere deine Azure-Fähigkeiten

Optimieren und Überwachen deiner Pipelines

Früher in meiner Karriere war der Aufbau von Pipelines nicht die größte Herausforderung - eine schnelle und zuverlässige Pipeline zu haben schon. Eine gut optimierte Pipeline sorgt nicht nur für schnellere Builds, sondern verringert auch die Frustration im Team, senkt die Bereitstellungsrisiken und beschleunigt die Bereitstellung. 

Ich verrate dir einige Tipps und Strategien, mit denen du deine Azure DevOps Pipelines schnell, organisiert und zuverlässig halten kannst.

Pipeline-Caching

Die Installation von Abhängigkeiten ist ein weiterer häufiger Engpass in der Pipeline. Egal ob du mit npm, .NET oder anderen Paketmanagern arbeitest, das wiederholte Herunterladen der gleichen Abhängigkeiten kann viel Zeit kosten. Das Zwischenspeichern von Abhängigkeiten und Artefakten zwischen den Läufen verkürzt die Ausführungszeit drastisch. 

Hier erfährst du, wie du Abhängigkeiten in Azure Pipelines zwischenspeichern kannst.

Zuerst musst du die Paketmanager identifizieren, wie z.B.:

  • Node.js (node_modules)
  • NuGet-Pakete
  • Python (pip Pakete)
  • Maven/Gradle-Abhängigkeiten

Azure Pipelines unterstützt Caching-Mechanismen, wie z. B. die Aufgabe Cache@2, mit der du Abhängigkeiten zwischen Pipeline-Läufen zwischenspeichern kannst. 

Nehmen wir als Beispiel ein einfaches Caching für Node.js:

# This task is used to cache files to speed up your pipeline.
- task: Cache@2  # This is the task name for caching files in Azure Pipelines.
  inputs:
    # Key is used to identify the cache. It combines npm (package manager), operating system (OS), and package-lock.json files.
    key: 'npm | "$(Agent.OS)" | package-lock.json'



    # RestoreKeys is an optional value used when the specific cache key is not found. It helps to find a fallback cache.
    restoreKeys: |
      npm | "$(Agent.OS)"



    # Path defines the location of files or folders to be cached.
    # Here, we are caching the 'node_modules' directory to avoid reinstalling dependencies.
    path: '$(Build.SourcesDirectory)/node_modules'



    # CacheHitVar is a variable that stores whether the cache was successfully used (restored).
    # This can be checked later in the pipeline to decide if tasks need to run.
    cacheHitVar: 'NPM_CACHE_RESTORED'

Du kannst dann die Installation überspringen, wenn sie im Cache ist. Dies ist ein cleverer Check, bevor du die Installation von npm abschließt. Es ist eine effiziente bedingungsbasierte Logik.

Nehmen wir unten ein einfaches Beispiel:

# This step runs the command to install Node.js dependencies using npm.

- script: npm install  # Installs packages listed in the package.json file.
  
# The condition checks whether the cache was restored successfully.
# This step will run if the cache is not restored ('NPM_CACHE_RESTORED' is not true).
  condition: ne(variables.NPM_CACHE_RESTORED, 'true')  # Run only if the cache is not restored.

Dieses Beispiel für einfaches Caching für eine Node.js-Anwendung speichert das Cache-Verzeichnis npm mit package-lock.json als Schlüssel. Wenn sich deine Abhängigkeiten nicht ändern, stellt es sie wieder her und spart so bei jedem Build Minuten. 

Ich habe erlebt, dass Caching die Erstellungszeit drastisch reduziert, vor allem bei großen Projekten, aber nur, wenn die Cache-Schlüssel sorgfältig ausgewählt werden. In einem meiner letzten Projekte konnte ich so die Erstellungszeit einer Node.js-Anwendung um 55 % reduzieren.

Überwachung des Zustands der Pipeline

Eine erfolgreiche Pipeline besteht nicht nur aus grünen Häkchen, Sichtbarkeit und schnellem Feedback. Wenn etwas kaputt geht, soll dein Team sofort Bescheid wissen. Hier erfährst du, wie du den Problemen einen Schritt voraus bist.

Wie man Azure DevOps Dashboards einrichtet

Azure DevOps bietet integrierte Widgets zur Anzeige des Pipelinestatus, der letzten Läufe, der Fehlerraten und der durchschnittlichen Dauer. 

  • Zuerst navigierst du zu Dashboards unter deinem Projekt.

Die Azure DevOps-Benutzeroberfläche zeigt den Bereich Dashboards mit integrierten Widgets für den Pipelinestatus, die letzten Läufe, Fehlerraten und die durchschnittliche Dauer.

  • Klicken Sie dann auf Neues Dashboard oder verwende ein bestehendes.

Die Azure DevOps-Benutzeroberfläche zeigt die Option, ein neues Dashboard zu erstellen oder ein bestehendes Dashboard unter dem Abschnitt Dashboards auszuwählen.

  • Du kannst Widgets hinzufügen wie: Geschichte bauen, Übersicht über die Release Pipeline, Testergebnisse Trendund mehr.

Azure DevOps-Oberfläche mit Optionen zum Hinzufügen von Widgets wie Build History, Release Pipeline Overview und Test Results Trend.

Diese Lernpfade sind wichtig, um Trends beim Bestehen und Nichtbestehen zu verfolgen, zu sehen, welche Umgebungen problematisch sind, und vieles mehr.

Konfigurieren von Warnungen für fehlgeschlagene Pipelines

  • Gehe unten links in deinem Projekt auf Projekt-Einstellungen.

Die Azure DevOps-Benutzeroberfläche zeigt unten links die Option Projekteinstellungen an, mit der du Warnungen für fehlgeschlagene Pipelines konfigurieren kannst.

  • Klick Benachrichtigungen.

Die Azure DevOps-Benutzeroberfläche zeigt die Option "Benachrichtigungen" für die Konfiguration von Pipeline-Warnungen.

  • Dann klicken Sie auf Neues Abonnement.

Die Azure DevOps-Benutzeroberfläche zeigt die Option zum Erstellen eines neuen Abonnements für Benachrichtigungen unter dem Abschnitt Benachrichtigungen.

Gehen wir von einem Szenario aus: Im Abschnitt Kategorie wählst du Build; im Abschnitt Vorlage wählst du "A build fails" und klickst auf Weiter.

Du hast eine Schnittstelle wie die folgende:

Die Azure DevOps-Benutzeroberfläche zeigt den Abschnitt "Kategorie" mit der Auswahl "Build" und den Abschnitt "Vorlage" mit der Auswahl "Ein Build schlägt fehl" für die Erstellung eines Benachrichtigungsabonnements an.

  • Klicken Sie abschließend auf Fertigstellen.
  • In den Benachrichtigungen Abschnitt kannst du die Build Beschreibung auf den "Ein Build schlägt fehl" überprüfen, die wir zuvor erstellt haben.

Die Azure DevOps-Oberfläche zeigt den Abschnitt Benachrichtigungen mit der Build-Beschreibung für die zuvor erstellte Benachrichtigung "Ein Build schlägt fehl".

Ich habe einmal einen kritischen Einsatzfehler verpasst, weil keine Warnmeldungen eingerichtet waren. Seitdem habe ich für jeden Produktionseinsatz Teamwarnungen eingerichtet und konfiguriert. Auf diese Weise verpasse ich nie einen fehlerhaften Build oder eine Verzögerung in meinem Veröffentlichungszyklus.

Analyse der Pipeline-Leistung

Wir wissen, dass deine Pipeline, selbst wenn sie funktioniert, langsam sein kann und langsame Pipelines die Produktivität beeinträchtigen. Das frühzeitige Erkennen von Engpässen spart also später Ärger.

Pipeline-Metriken geben Aufschluss über die Leistung von Builds und Deployments. So kommst du an sie heran. 

Zuerst musst du Folgendes aktivieren Analytics-Ansichten unter den Projekteinstellungen und eine Verbindung zu Power BI herstellen oder über die integrierten Diagramme erkunden.

Den Zustand der Pipeline überwachen

  • Unter den Pipelines Abschnitt, gehen Sie zu Analytik.
  • Sieh dir Kennzahlen wie die Durchlaufrate der Pipeline, die Durchlaufrate der Tests und die Dauer der Pipeline an.

Überwache den Zustand der Pipeline:

Gehe zu Pipelines und wähle dann Analytics.

Sieh dir wichtige Kennzahlen wie die Erfolgsquote der Pipeline, die Erfolgsquote der Tests und die Dauer der Pipeline an.

Diese Funktion hilft dir, die Leistung deiner Pipeline im Auge zu behalten und sicherzustellen, dass alles reibungslos läuft.

Wir wollen uns genauer ansehen, welche wichtigen Kennzahlen wir in der Analytik überwachen können und warum sie wichtig sind:

Metrisch

Warum es wichtig ist

Trends der Baudauer

So kannst du Verlangsamungen im Laufe der Zeit leicht erkennen.

Ausfallrate nach Branche

Dies hilft, instabile Merkmale zu erkennen.

Zeit in der Warteschlange

Dies hilft, Engpässe bei den Agenten zu erkennen.

Vor ein paar Monaten habe ich an der Pipeline eines Kunden gearbeitet, undwas dabei besonders auffiel, war die Time in Queue. Ich habe einmal festgestellt, dass mein Team und ich einen selbst gehosteten Agentenpool überlastet hatten und 40 % unserer Pipelinezeit damit verbracht haben, auf einen verfügbaren Runner zu warten. Niemand hat es kommen sehen, bis die Analysen es offensichtlich gemacht haben.

Wir könnten das beheben, indem wir zwei weitere selbst gehostete Agenten hinzufügen und die Last nach Auftragsart verteilen. Die Ergebnisse zeigten sich sofort: Die durchschnittliche Bauzeit für die Pipeline sank um etwa 35 %.

Überwachung anhand von Protokollen

Abgesehen von den Metriken sind die Timeline-Logs also Gold wert, vor allem bei lang laufenden Aufgaben. Im Laufe der Jahre habe ich in kritischen Schritten von Skripten immer wieder benutzerdefinierte Protokollmarkierungen eingefügt, um genaue Verzögerungen festzustellen.

Lass uns ein einfaches Beispiel nehmen:

# This step prints a message to the console in the pipeline logs.
# It helps to mark the start of the dependency installation process.

echo "=== START: Dependency Install ==="  # Display a message indicating the beginning of dependency installation.

Werde Azure AZ-900 zertifiziert

Bereite dich auf Azure's PL-300 vor und erhalte 50% Rabatt auf die Prüfungsgebühr.

Best Practices für Azure Pipelines

Nachdem wir uns nun mit den Kerndiensten von Azure Pipelines und vielen weiteren Diensten befasst haben, wollen wir uns nun ansehen, wie du das Beste aus ihnen herausholen kannst, indem du diese Best Practices befolgst. 

Lass uns von der Leistung zur Struktur übergehen, denn eine schnelle Pipeline, die schwer zu pflegen ist, schadet jedem Team.

Organisieren von Pipelines für Teams

Wenn mehrere Teams oder Umgebungen Pipelines gemeinsam nutzen, wird es oft unübersichtlich. Du wirst Struktur brauchen. Eine riesige Pipeline für Entwicklungs-, Staging- und Produktionsumgebungen führt zu Chaos. 

Um deine Pipeline zu organisieren, musst du sie in Umgebungen unterteilen. Schauen wir uns im Folgenden eine einfache Strukturan. 

Umwelt

Pipeline Name

Auslöser

Entwicklung

dev.yml

Feature-Zweige (Läuft bei jedem Commit)

Inszenierung

staging.yml

Pull Requests → Staging (Manueller Trigger)

Produktion

prod.yml

Manuelle oder freigegebene Pipelines (Genehmigung erforderlich)

Die wichtigsten Dinge, die du aus dieser einfachenStruktur verstehen kannst:

  • Jede Datei wird aus gemeinsamen Vorlagen gezogen.
  • Jede Datei verwendet umgebungsspezifische Variablen.
  • Jede Datei steuert den Zugriff über Pipeline-Berechtigungen.

Die Erfahrung zeigt, dass diese Trennung das Debugging erleichtert und es jüngeren Entwicklern ermöglicht, in der Entwicklungsumgebung zu arbeiten, ohne die Produktionsumgebung zu gefährden.

Vorlagen und wiederverwendbaren Code verwenden

Bei DevOps geht es darum, manuelle Arbeitsabläufe zu reduzieren und die Automatisierung des gesamten Softwareentwicklungsprozesses zu verbessern. 

YAML-Code ist fehleranfällig, wenn er zwischen Projekten kopiert und eingefügt wird. Azure DevOps bietet Pipeline-Vorlagen für die DRY-Einrichtung (Don't Repeat Yourself) über YAML-Pipelines. Du kannst die YAML-Pipeline-Vorlagen projektübergreifend wiederverwenden, deine Pipelines einheitlich gestalten und sogar die Bearbeitungszeit der Pipelines reduzieren.

Nehmen wir ein einfaches wiederverwendbares Build-Template als Beispiel.

Definiere zunächst deine Build-Vorlage, build-template.yml:

# Here we configure the platform and the build configuration.
parameters:
  buildPlatform: 'Any CPU'  # This specifies the build platform (e.g., Any CPU, x86, x64).
  buildConfiguration: 'Release'  # This specifies the build configuration (Release) to avoid warning.

# A pipeline is composed of steps (a series of tasks that will be executed)
steps:
- task: DotNetCoreCLI@2  # Task for running .NET Core commands in the pipeline.
  inputs:
    command: 'build'  # This runs the 'build' command to compile the project(s).
    projects: '**/*.csproj'  # This specifies to build all .csproj files in the repository.
    arguments: '--configuration ${{ parameters.buildConfiguration }}'
    # This passes the build configuration parameter (e.g., Release or Debug) to the command.

Verwende deine Build-Vorlage in deiner Hauptpipeline:

# A pipeline job is a group of tasks. Here, the job is named 'Build'.
jobs:
- job: Build  # The job name where the build process occurs.

  # Steps define the tasks or actions the pipeline will perform.
  steps:
  - template: templates/build-template.yml  # Reference an external YAML template for reusable steps.

Geheimnisse und Variablen verwalten

Bei der Arbeit an Projekten, insbesondere in kollaborativen Umgebungen, ist es üblich, sensible Informationen wie Datenbankverbindungsstrings, API-Schlüssel, Passwörter oder Token zu verwenden. Wenn diese Geheimnisse in deinem Code fest kodiert sind oder in Protokollen auftauchen, können sie leicht kompromittiert werden.

Sehen wir uns an, wie wir unsere Geheimnisse und Variablen mit Azure Pipelines Geheimnissen und Variablengruppen sicher verwalten können.

Schritt 1: Erstellen einer Variablengruppe

  • Klicken Sie auf die Pipelines Registerkarte in der linken Seitenleiste.
  • Klicken Sie im Abschnitt Pipelines auf Bibliothek.

Die Azure DevOps-Oberfläche zeigt die Registerkarte Pipelines in der linken Seitenleiste und die Option Bibliothek im Abschnitt Pipelines.

  • Erstelle eine Variablengruppe:
    • Klicken Sie auf die Variablengruppen Registerkarte.

Erstelle ganz einfach eine neue Variablengruppe:

In Azure DevOps navigierst du zu Pipelines und wählst dann Bibliothek.

Erstelle eine neue Variablengruppe.

Dieser Schritt hilft dir, deine Variablen zu verwalten und zu organisieren, damit du deine Pipelines effizient konfigurieren kannst.

  • Klicken Sie auf das Feld Variablengruppe hinzufügen Schaltfläche.
  • Gib einen Namen für deine Variablengruppe ein (z. B. MyAppSecrets).

Die Azure DevOps-Benutzeroberfläche zeigt die Schaltfläche Variablengruppe hinzufügen und ein Feld zur Eingabe des Namens der Variablengruppe, z. B. MyAppSecrets.

Schritt 2: Hinzufügen von Geheimnissen zur Variablengruppe

  • Variablen hinzufügen: 
    • In der Variablengruppe klickst du auf Hinzufügen um eine neue Variable zu erstellen.

Die Azure DevOps-Benutzeroberfläche zeigt die Möglichkeit, Variablen innerhalb einer Variablengruppe hinzuzufügen, indem du auf die Schaltfläche Hinzufügen klickst.

  • Gib den Namen der Variablen ein (z. B. DB_CONNECTION_STRING).
  • Markiere das Kästchen mit der Aufschrift Diesen Wert geheim halten um sicherzustellen, dass er als Geheimnis behandelt wird.
  • Gib den Wert der Variablen ein (z. B. den Verbindungsstring meiner Datenbank).

Azure DevOps-Schnittstelle mit Feldern zur Eingabe eines Variablennamens (z. B. DB_CONNECTION_STRING), zur Kennzeichnung als geheim und zum Festlegen des Werts (z. B. Datenbankverbindungsstring).

  • Klicke auf Speichern um die Variable zu speichern.

Die Azure DevOps-Oberfläche zeigt die Schaltfläche Speichern, mit der die neu hinzugefügte Variable in der Variablengruppe gespeichert wird.

Schritt 3: Geheimnisse in deiner Pipeline verwenden

Jetzt, wo du eine Variablengruppe mit Geheimnissen erstellt hast, kannst du diese Variablen in deiner Pipeline-YAML-Datei verwenden.

  • Verweise auf die Variablengruppe: Füge die Variablengruppe zu deiner Pipeline-YAML-Datei hinzu: 
variables:
- group: MyAppSecrets
  • Nutze die Geheimnisse in deinen Schritten: Du kannst die Geheimnisse in deinen Pipelineschritten mit der Syntax $(VariableName) referenzieren. Hier ist ein Beispiel dafür, wie du DB_CONNECTION_STRING in einem Scriptschritt verwenden kannst:
# This defines the trigger for the pipeline.
# The pipeline runs automatically whenever changes are pushed to the 'main' branch.
trigger:
- main  # Trigger the pipeline on changes to the 'main' branch.

# The pool specifies the environment where the pipeline will run.
# 'ubuntu-latest' means the pipeline will use the latest Ubuntu operating system image.
pool:
  vmImage: 'ubuntu-latest'  # Use the latest Ubuntu image provided by Azure Pipelines.

# Variables section defines reusable values for the pipeline.
# 'group: MyAppSecrets' links to a variable group that stores sensitive information like secrets.
variables:
- group: MyAppSecrets  # Load secrets, such as database credentials, from a variable group.

# Steps define the tasks that the pipeline will execute one by one.
steps:
- script: |
    echo "Connecting to the database..." # Print a message indicating the start of database connection.
    echo "Connection String: $(DB_CONNECTION_STRING)" # Display the database connection string from the variable group.
  displayName: 'Connect to Database'  # A simple name for this step that appears in the pipeline logs.

Schritt 4: Betrieb der Pipeline

  • Sobald du deine YAML-Datei gespeichert hast, gehst du zu den Pipelines und klicke auf Pipeline ausführen.
  • Nachdem die Pipeline gelaufen ist, kannst du deine Logs überprüfen. Du wirst feststellen, dass der geheime Wert versteckt ist, damit deine sensiblen Informationen sicher sind.

Fazit

In diesem Tutorial gehen wir den gesamten Weg der Nutzung von Azure Pipelines durch - vom Einrichten deiner ersten Pipeline bis hin zum Aufbau, Testen, Bereitstellen, Überwachen und Optimieren.

Die Einführungsphase erfordert Übung. Fange einfach an, verbessere dich ständig und mit der Zeit wirst du Vertrauen und Sicherheit im Umgang mit CI/CD-Workflows gewinnen. Azure Pipelines gibt dir die Werkzeuge, du bringst die Iteration und das Lernen mit.

Mit konsequenter Arbeit kannst du deinen Entwicklungsprozess optimieren und sicher sein, dass du qualitativ hochwertige Software in großem Umfang bereitstellen kannst.

Um tiefer in Azure DevOps und Microsoft Azure einzutauchen, schaudir die folgenden Ressourcen an: 

FAQs

Kann ich Azure Pipelines für Nicht-Azure-Projekte nutzen?

Ja, das kannst du. Azure Pipelines unterstützt die Bereitstellung in On-Premise- und verschiedenen Cloud-Umgebungen wie AWS, GCP und vielen mehr.

Welche Programmiersprachen werden von Azure Pipelines unterstützt?

Azure Pipelines unterstützt viele Programmiersprachen, darunter Node.js, Python, Java, .NET und viele mehr.

Was ist der Unterschied zwischen Azure Pipelines und GitHub Actions?

Azure Pipelines bietet eine tiefere Integration mit dem Azure-Ökosystem und robuste Deployment-Tools, während GitHub Actions ein einfacheres, GitHub-natives CI/CD-Erlebnis bietet. Beide unterstützen YAML-Workflows und containerisierte Bereitstellungen.

Kann ich Azure Pipelines mit Nicht-Microsoft-Technologien wie Python oder Java nutzen?

Ja, Azure Pipelines unterstützt alle wichtigen Plattformen und Sprachen, einschließlich Python, Java, Node.js und mehr. Du kannst Builds und Deployments für jeden Tech Stack mit YAML konfigurieren.

Ist die Nutzung von Azure Pipelines kostenlos?

Azure Pipelines bietet einen kostenlosen Tier mit 1.800 Minuten/Monat für öffentliche Projekte und begrenzte private Bauzeit. Zusätzliche Nutzung erfordert einen kostenpflichtigen Plan oder selbst gehostete Agenten.

Was sind Azure DevOps Service Connections, und warum sind sie wichtig?

Service Connections verbinden Azure Pipelines sicher mit externen Diensten wie Azure Web Apps oder Kubernetes-Clustern. Sie sind unverzichtbar für die automatisierte Bereitstellung und Verwaltung der Infrastruktur.

Wie ist Azure Pipelines im Vergleich zu Jenkins oder CircleCI?

Azure Pipelines bietet eine besser integrierte Erfahrung für Azure-Nutzer und eine bessere Unterstützung für Microsoft-Dienste. Jenkins ist besser anpassbar, erfordert aber mehr Einrichtungsaufwand; CircleCI zeichnet sich durch Geschwindigkeit und Parallelität aus.


Emmanuel Akor's photo
Author
Emmanuel Akor
LinkedIn
Twitter

Emmanuel Akor ist ein Cloud- und DevOps-Ingenieur, der sich mit der Nutzung von Cloud-Technologien und DevOps-Tools auskennt, um wirkungsvolle Projekte voranzutreiben. Emmanuel hat einen erstklassigen Abschluss in Informatik von der Babcock University und war früher Cloud Co-Lead bei GDSC. Als Technical Content Writer zeichnet er sich dadurch aus, dass er Wissen weitergibt und mit Teams zusammenarbeitet.

Themen

Lerne mehr über Azure mit diesen Kursen!

Kurs

Understanding Microsoft Azure

3 Std.
34.2K
Learn about the power of Microsoft Azure and cloud computing software to help you improve your data engineering skills.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 50 besten AWS-Interview-Fragen und Antworten für 2025

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interviewfragen, zusammen mit Fragen, die auf realen Situationen basieren.
Zoumana Keita 's photo

Zoumana Keita

15 Min.

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 Min.

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen