Continuous Deployment mit Azure DevOps

Continuous Deployment mit Azure DevOps

Sven Hennessen

Einleitung

In der dynamischen Welt der Software-Entwicklung kann die richtige Implementierung von DevOps-Praktiken über Erfolg oder Misserfolg eines Projekts entscheiden. Microsoft Azure DevOps bietet ein beeindruckendes Arsenal an Tools, um die Continuous Integration und Continuous Deployment (CI/CD)-Pipeline effizient zu gestalten. In diesem Artikel sehen wir uns ein paar hilfreiche Grundlagen an.

YAML Templates und Repository Resourcen

YAML Templates bieten eine wiederverwendbare Struktur für Azure DevOps Pipelines, die es ermöglicht, Pipeline-Konfigurationen im Code zu verwalten In Kombination mit Repository Resources, können diese Templates einmalig definiert und dann in mehreren Projekten eingebunden werden. Dabei liegen die Templates in einem git Repository, die konkreten Projekte wiederum in anderen Repositories. So kann sichergestellt werden, dass alle Projekte konsistente und aktualisierte Pipeline-Konfigurationen verwenden.

resources:
  repositories:
    - repository: templates
      type: git
      endpoint: # Name der Service Connection in Azure DevOps
      name: # Name des Repositories in dem die Templates liegen
      ref: # Optional, git ref im Ziel-Repository

stages:
  - template: templates/deploy-template.yml@templates
Repository Resourcen Flow Diagramm

Automatisierung von Deployments durch Pipeline Resourcen

Azure DevOps ermöglicht die Automatisierung von Deployments durch Build Completion Triggers, die sicherstellen, dass Deployments nur dann durchgeführt werden, wenn der vorherige Build erfolgreich war. Pipeline Resourcen und ihre Trigger-Konfiguration erlauben dabei fein-granular zu entscheiden, wann die aktuelle Pipeline automatisiert gestartet werden soll.

Beispielsweise lässt sich so ein Deployment automatisch starten, sobald der Build einer Applikationskomponente erfolgreich war.

resources:
  pipelines:
    - pipeline: BuildPipeline
      source: BuildPipeline
      trigger:
        branches:
          include:
          - main

stages:
  # Deployment Stages
Pipeline Resourcen Sequenz Diagramm

Mehrstufige Pipelines

Pipelines bilden mehrstufige Prozesse ab, wobei die Stufen (Stages) beispielsweise den Build einer konkreten Applikationskomponente oder das Deployment auf ein definiertes System darstellen. Durch das dependsOn-Attribut lassen sich komplexe Abhängigkeiten zwischen verschiedenen Stages einer Pipeline darstellen, was eine präzise Kontrolle über den Deployment-Fluss in verschiedenen Umgebungen ermöglicht.

stages:
  - stage: deploy_to_staging
    jobs:
      - job: ...
  - stage: deploy_to_environment_a
    # Wird nur ausgeführt wenn "staging" erfolgreich deployed wurde
    dependsOn: deploy_to_staging
    condition: succeeded()
    jobs:
      - job: ...
  - stage: deploy_to_environment_a
    dependsOn: deploy_to_staging
    condition: succeeded()
    jobs:
      - job: ...
Multi-Stage Deployment Flow Diagramm

Zusammenfassung und Ausblick

Azure DevOps bietet eine Vielzahl von funktionen, um moderne Softwareentwicklungsprozesse effizient und sicher zu gestalten. Die gezeigten Funktionen bilden die Grundlagen für ein nachhaltiges Design von automatisierten CI/CD-Pipelines.

Das ist aber noch lange nicht alles was durch Azure DevOps Pipelines möglich ist. In den nächsten Artikeln zum Thema schauen wir uns an, wie Deployments durch Freigaben abgesichert werden können, wie man idealerweise mit Secrets umgeht und wie man Pipelines nutzen kann um Deployments auf Kubernetes mit Helm zu automatisieren.

Keinen Artikel mehr verpassen

Kein Spam. Nur relevante News über und von uns. Jederzeit abbestellbar.