Freigeben über


Empfehlungen für die Verwendung von Continuous Integration

Gilt für diese Checklistenempfehlung für Azure Well-Architected Framework Operational Excellence:

OE:04 Optimieren Sie Softwareentwicklungs- und Qualitätssicherungsprozesse, indem Sie bewährte Methoden für Entwicklung und Tests befolgen. Für eine klare Rollenbezeichnung standardisieren Sie Methoden für komponentenübergreifend, z. B. Tools, Quellcodeverwaltung, Anwendungsentwurfsmuster, Dokumentation und Formatvorlagen.

Verwandte Anleitung: Verbessern der Buildgeschwindigkeit | Standardisierung von Tools und Prozessen

Wenn Code entwickelt, aktualisiert oder sogar entfernt wird, können Entwickler mit einer intuitiven und sicheren Methode zum Integrieren dieser Änderungen in den Standard Codebranch einen Mehrwert bieten.

Als Entwickler können Sie kleine Codeänderungen vornehmen, diese Änderungen in ein Coderepository pushen und fast sofortiges Feedback zu Qualität, Testabdeckung und eingeführten Fehlern erhalten. Mit diesem Prozess können Sie schneller und mit mehr Vertrauen und weniger Risiko arbeiten.

Continuous Integration (CI) ist eine Methode, bei der Quellcodeverwaltungssysteme und Softwarebereitstellungspipelines integriert werden, um automatisierte Build-, Test- und Feedbackmechanismen für Teams bereitzustellen, die Software entwickeln.

Wichtige Entwurfsstrategien

Continuous Integration ist eine Softwareentwicklungspraxis, die Entwickler verwenden, um Softwareupdates im regelmäßigen Rhythmus in ein Quellcodeverwaltungssystem zu integrieren.

Der Continuous Integration-Prozess beginnt, wenn ein Techniker einen GitHub-Pull Request erstellt, um dem CI-System zu signalisieren, dass Codeänderungen für die Integration bereit sind. Im Idealfall überprüft der Integrationsprozess den Code anhand mehrerer Baselines und Tests. Anschließend wird dem anfordernden Techniker Feedback zur status dieser Tests bereitgestellt.

Wenn die Baselineüberprüfungen und -tests gut verlaufen, werden beim Integrationsprozess Ressourcen erstellt und schrittweise bereitgestellt, die die aktualisierte Software bereitstellen. Zu diesen Ressourcen gehören kompilierter Code und Containerimages.

Continuous Integration kann Ihnen helfen, qualitativ hochwertige Software schneller bereitzustellen, indem Sie die folgenden Aktionen ausführen:

  • Führen Sie automatisierte Tests für den Code aus, um eine frühzeitige Erkennung von breaking changes zu ermöglichen.
  • Ausführung von Codeanalysen, um die Einhaltung von Code- und Qualitätsstandards und eine ordnungsgemäße Konfiguration sicherzustellen
  • Führen Sie Konformitäts- und Sicherheitsprüfungen durch, um sicherzustellen, dass die Software keine bekannten Sicherheitsrisiken aufweist.
  • Führen Sie Akzeptanz- oder Funktionstests durch, um sicherzustellen, dass die Software erwartungsgemäß funktioniert.
  • Geben Sie schnelles Feedback zu erkannten Problemen.
  • Erstellen bereitstellbarer Ressourcen oder Pakete mit dem aktualisierten Code, falls zutreffend

Continuous Integration-Pipelines

Verwenden Sie Softwarelösungen zum Verwalten, Integrieren und Automatisieren des Prozesses, um Continuous Integration zu erzielen. Eine gängige Praxis ist die Verwendung einer Continuous Integration-Pipeline.

Eine Continuous Integration-Pipeline umfasst eine Software (häufig in der Cloud gehostet), die Folgendes bietet:

  • Eine Plattform zum Ausführen automatisierter Tests.
  • Konformitätsüberprüfungen.
  • Die Berichterstellung
  • Alle anderen Komponenten, aus denen der Continuous Integration-Prozess besteht.

In den meisten Fällen wird die Pipelinesoftware an die Quellcodeverwaltung angefügt, sodass die Continuous Integration-Pipeline ausgeführt wird, wenn Pull Requests erstellt oder Software in einem bestimmten Branch zusammengeführt wird. Die Quellcodeverwaltungsintegration bietet auch die Möglichkeit, CI-Feedback direkt zu Pull Requests zu geben.

Viele Lösungen, z. B. Azure Pipelines oder GitHub Actions, bieten die Funktionen von Continuous Integration-Pipelines.

Integration der Quellcodeverwaltung

Die Integration Ihrer Continuous Integration-Pipeline in Ihr Quellcodeverwaltungssystem ist der Schlüssel zum Aktivieren schneller Self-Service-Code-Beiträge.

Die CI-Pipeline wird für einen neu erstellten Pull Request ausgeführt. Die Pipeline umfasst alle Tests, Sicherheitsbewertungen und andere Überprüfungen. CI-Testergebnisse werden direkt im Pull Request angezeigt, um nahezu Echtzeitfeedback zur Qualität zu ermöglichen.

Eine weitere gängige Methode ist das Erstellen kleiner Berichte oder Badges, die in der Quellcodeverwaltung angezeigt werden können, um die aktuellen Buildzustände sichtbar zu machen.

In der folgenden Abbildung ist die Integration zwischen GitHub und einer Azure DevOps-Pipeline dargestellt. In diesem Beispiel löst die Erstellung eines Pull Request eine Azure DevOps-Pipeline aus. Die Pipeline status im Pull Request angezeigt.

Screenshot eines Azure DevOps-status-Badges in einem GitHub-Repository

Testintegration

Ein Schlüsselelement der Continuous Integration ist das kontinuierliche Erstellen und Testen von Code, während Entwickler Code Beiträge. Das Testen von Pull Requests während der Erstellung gibt schnelles Feedback, dass der Commit keine breaking Changes eingeführt hat. Der Vorteil besteht darin, dass die Tests in der Continuous Integration-Pipeline dieselben Tests sein können, die während der testgesteuerten Entwicklung ausgeführt werden.

Der folgende Codeausschnitt veranschaulicht einen Testschritt aus einer Azure DevOps-Pipeline. Der Schritt umfasst zwei Aufgaben:

  • Die erste Aufgabe verwendet ein beliebtes Python-Testframework, um CI-Tests auszuführen. Diese Tests sind zusammen mit dem Python-Code in der Quellcodeverwaltung enthalten. Die Testergebnisse werden in eine Datei namens test-results.xml.
  • Die zweite Aufgabe nutzt die Testergebnisse und veröffentlicht sie als integrierten Bericht in der Azure DevOps-Pipeline.
- script: |
    pip3 install pytest
    pytest azure-vote/azure-vote/tests/ --junitxml=junit/test-results.xml
    continueOnError: true

- task: PublishTestResults@2
    displayName: 'Publish Test Results'
    inputs:
    testResultsFormat: 'JUnit'
    testResultsFiles: '**/test-results.xml'
    failTaskOnFailedTests: true
    testRunTitle: 'Python $(python.version)'

Die folgende Abbildung zeigt Testergebnisse, die im Azure DevOps-Portal angezeigt werden.

Screenshot: Azure DevOps-Pipelinetests im Azure DevOps-Portal

Tests mit Fehlern

Fehlgeschlagene Tests sollten eine Bereitstellung vorübergehend blockieren und zu einer tieferen Analyse des Geschehens führen. Fehlgeschlagene Tests sollten auch entweder zu einer Verfeinerung der Tests oder zu einer Verbesserung der Änderung führen, die dazu führte, dass die Tests fehlschlagen.

CI-Ergebnis-Badges

Viele Entwickler zeigen, dass ihre Codequalität hoch ist, indem sie ein status-Badge in ihrem Repository anzeigen. Die folgende Abbildung zeigt ein Azure Pipelines-Badge, das in der Infodatei für ein Open-Source-Projekt in GitHub angezeigt wird.

Screenshot eines Azure Pipelines-Badges in einer Infodatei in GitHub.

Azure-Erleichterung

Azure DevOps ist eine Sammlung von Diensten, mit denen Sie eine gemeinsame, effiziente und konsistente Entwicklungsmethode erstellen können.

Azure Pipelines bietet Build- und Releasedienste zur Unterstützung von Continuous Integration und Continuous Delivery (CI/CD) Ihrer Anwendungen.

GitHub for Actions für Azure ermöglicht die Automatisierung von CI/CD-Prozessen. Es lässt sich direkt in Azure integrieren, um Bereitstellungen zu vereinfachen. Sie können Workflows erstellen, die alle Pull Requests in Ihrem Repository erstellen und testen oder die zusammengeführte Pull Requests in der Produktion bereitstellen.

Erfahren Sie, wie Sie mithilfe von GitHub oder Azure DevOps eine Continuous Integration-Pipeline erstellen:

Erfahren Sie, wie Sie Badges in Ihren Repositorys anzeigen:

Checkliste für operationale Exzellenz