Tavo-IT Logo
Expertenwissen35 min Lesezeit2025-06-12

Azure DevOpsPipelines & CI/CD

Azure DevOps für CI/CD Pipelines, Repos, Boards und Artifacts - Best Practices für agile Softwareentwicklung und Deployment-Automatisierung.

Azure DevOpsCI/CDAgileMicrosoft Azure

🚀 Azure DevOps Grundlagen

Azure DevOps Services (ehemals VSTS) ist eine Suite von Microsoft-Tools für den gesamten Softwareentwicklungs-Lebenszyklus. Es unterstützt agile Planung, Quellcodeverwaltung, Build- und Release-Automatisierung sowie Testmanagement.

🧩 Integriert

End-to-End DevOps Toolchain

☁️ Cloud & On-Prem

Azure DevOps Services & Server

⚙️ Flexibel

Anpassbar an jeden Workflow

📂 Azure Repos (Git)

Branching Strategie Beispiel

# Git Branching Modell (z.B. GitFlow Variante)

# Main/Master Branch (Produktion)
# Stabil, repräsentiert den produktiven Code.
# Nur Merge von Release-Branches oder Hotfixes.
git checkout main
git merge --no-ff release/v1.2.0
git tag -a v1.2.0 -m "Release Version 1.2.0"

# Develop Branch (Integration)
# Hauptentwicklungszweig, integriert alle Features.
git checkout develop
git merge --no-ff feature/neues-dashboard

# Feature Branches (für neue Funktionen)
# Abzweigung von Develop, pro Feature ein Branch.
git checkout develop
git checkout -b feature/benutzer-authentifizierung
# ... Entwicklung ...
git add .
git commit -m "Feature: Benutzer-Authentifizierung implementiert"
git push origin feature/benutzer-authentifizierung
# Pull Request erstellen zu Develop

# Release Branches (Vorbereitung für Releases)
# Abzweigung von Develop, für Stabilisierung und Bugfixes vor Release.
git checkout develop
git checkout -b release/v1.2.0
# ... Bugfixes, Tests, Doku ...
# Merge zu Main und Develop nach Freigabe

# Hotfix Branches (für kritische Produktionsfehler)
# Abzweigung von Main, für schnelle Korrekturen.
git checkout main
git checkout -b hotfix/kritischer-login-bug
# ... Bugfix ...
# Merge zu Main und Develop nach Freigabe

Kernfunktionen

  • Git Repositories - Unbegrenzte private Repos
  • Branch Policies - Code Review, Build-Validierung
  • Pull Requests - Code-Diskussion & Merge-Prozess
  • Semantic Versioning - Tags für Releases
  • TFVC Support - Alternative zu Git (Legacy)

Best Practices

  • Klare Branching-Strategie - z.B. GitFlow, GitHub Flow
  • Regelmäßige Commits - Kleine, atomare Änderungen
  • Sinnvolle Commit-Messages - Nachvollziehbarkeit
  • Pull Requests für alle Änderungen - Code Qualität
  • Branch Policies erzwingen - Schutz wichtiger Branches

⚙️ Azure Pipelines (CI/CD)

Azure Pipelines ist ein leistungsstarker Dienst für Continuous Integration (CI) und Continuous Delivery (CD). Es ermöglicht das automatische Bauen, Testen und Bereitstellen von Anwendungen in beliebigen Umgebungen.

🏗️ Build Pipelines

Beispiel YAML Build Pipeline (Node.js)

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

variables:
  node.version: '18.x'
  buildConfiguration: 'Release'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: $(node.version)
  displayName: 'Install Node.js $(node.version)'

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

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: 'build' # oder 'dist', je nach Projektstruktur
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    replaceExistingArchive: true
  displayName: 'Archive build output'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'
  displayName: 'Publish Artifact: drop'

Wichtige Build Tasks

  • Tool Installer - Node, Python, Java, .NET Core SDK
  • npm, yarn, pip, Maven, Gradle, NuGet - Paketmanager
  • Build, Test, Publish - Projektspezifische Befehle
  • Code Analysis - SonarQube, WhiteSource Bolt
  • Docker Tasks - Build, Push, Run Images

Build Best Practices

  • Schnelle Builds - Optimierung der Build-Zeiten
  • Reproduzierbare Builds - Konsistente Ergebnisse
  • Build-Artefakte versionieren - Nachverfolgbarkeit
  • Security Scans integrieren - Frühzeitige Fehlererkennung
  • Notifications einrichten - Bei Fehlern informieren

🚀 Release Pipelines

Release Pipelines automatisieren die Bereitstellung von Build-Artefakten in verschiedenen Stages (z.B. Dev, Test, Staging, Prod). Sie ermöglichen kontrollierte Rollouts, Genehmigungsworkflows und Konfigurationsmanagement pro Stage.

Kernkonzepte

  • Stages: Logische Einheiten für Deployment-Phasen (Dev, Test, Prod).
  • Artifacts: Eingabe für die Pipeline (z.B. Build-Output).
  • Tasks: Einzelne Schritte zur Bereitstellung (z.B. App Service Deploy, Helm).
  • Agent Pools: Maschinen, die Deployment-Jobs ausführen.
  • Variables & Variable Groups: Konfigurationsmanagement.
  • Approvals & Gates: Kontrollpunkte für den Release-Prozess.

📄 YAML Pipelines as Code

Moderne Azure Pipelines werden oft als YAML-Dateien direkt im Repository versioniert. Dies ermöglicht "Pipelines as Code", was die Nachvollziehbarkeit, Wiederverwendbarkeit und Zusammenarbeit verbessert. Sowohl Build- als auch (Multi-Stage) Release-Logik kann in YAML definiert werden.

📊 Azure Boards (Agile)

Azure Boards bietet Werkzeuge für agiles Projektmanagement, einschließlich Scrum und Kanban. Es ermöglicht die Planung und Verfolgung von Arbeitselementen wie Epics, Features, User Stories und Tasks.

Kanban Boards

Visualisierung des Workflows, WIP-Limits.

Scrum (Sprints & Backlogs)

Sprint-Planung, Burndown-Charts.

Work Item Tracking

Anpassbare Typen und Felder.

Dashboards & Queries

Fortschrittsverfolgung und Reporting.

📦 Azure Artifacts

Azure Artifacts ermöglicht das Hosten und Teilen von Paketen wie NuGet, npm, Maven, Python (PyPI) und Universal Packages. Es integriert sich nahtlos in Azure Pipelines für ein zuverlässiges Paketmanagement.

  • Feeds: Private oder öffentliche Paketquellen.
  • Upstream Sources: Einbindung externer Registries (npmjs.org, nuget.org).
  • Symbol Server: Debugging-Symbole für .NET und native Anwendungen.
  • Sicherheit & Compliance: Zugriffskontrolle und Lizenz-Scanning.

🧪 Azure Test Plans

Azure Test Plans bietet eine umfassende Lösung für manuelles und exploratives Testen. Es unterstützt Testplanung, Testfallmanagement, Ausführung und Reporting.

🛡️ Sicherheit & Compliance

Sicherheitsfeatures

  • Service Connections - Sicherer Zugriff auf externe Dienste
  • Secrets Management - Azure Key Vault Integration, Variable Groups
  • Branch Policies & Approvals - Schutz kritischer Ressourcen
  • Security Scanning Tools - Integration in Pipelines (z.B. CredScan)
  • Audit Logs - Nachverfolgung von Änderungen

Compliance

  • ISO 27001, SOC 1/2, HIPAA - Zertifizierungen
  • Datenschutz (DSGVO) - Tools und Konfigurationen
  • Zugriffssteuerung - Rollenbasierte Berechtigungen (RBAC)
  • Governance Policies - Azure Policy Integration

🔌 Integrationen & Erweiterungen

Azure DevOps lässt sich durch zahlreiche Erweiterungen aus dem Visual Studio Marketplace anpassen und erweitern. Es bietet auch umfangreiche Integrationsmöglichkeiten mit Azure-Diensten und Drittanbieter-Tools (z.B. GitHub, Jenkins, SonarQube).