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.
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.
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.
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.
Verwandte Links
Erfahren Sie, wie Sie mithilfe von GitHub oder Azure DevOps eine Continuous Integration-Pipeline erstellen:
Erfahren Sie, wie Sie Badges in Ihren Repositorys anzeigen:
- Hinzufügen eines Azure Pipelines-status-Badges zu Ihrem Repository
- Hinzufügen eines GitHub-Workflows status Badges zu Ihrem Repository
Checkliste für operationale Exzellenz
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für