Beispiel für eine Java-Pipeline

Beschreibung der Abbildung cicd-process-pipeline.png
Der Pipeline-Orchestrator steuert den Pipelineprozess in diesem Java-Pipelinebeispiel, das mit einigen häufig verwendeten Tools dargestellt wird. Im Prozess werden folgende Schritte ausgeführt:
- Änderungscode
Führt grundlegende Git-Prüfungen für Zugangsdaten mit dem Statischen Application Security Testing (SAST) durch und initiiert die Pipeline. Verwendet die Gitflow-Methode, um das Code-Repository basierend auf der Struktur des Codes mit Tools wie GitLab oder GithHub zu verarbeiten. Der Code kann so strukturiert sein, dass Versionsverzweigungen, Zusammenführungen und Freigaben vorgenommen werden, um Quelländerungen zu steuern. Der Code ist Umgebungen wie Entwicklung, Test, Vorproduktion und Produktion zugeordnet. Commits in den verschiedenen Teilen des Repositorys lösen Sast-Aktionen aus.
- Beispiel: GitHub umfasst statische Sicherheitsscans, um nach Mustern zu suchen, die Kennwörter und Token in den Code- und Konfigurationsdateien erkennen.
- Erstellungscode
Generiert eine JAR/WAR/EAR und ruft die erforderlichen Abhängigkeiten ab. Mit Tools wie Java Apache Maven können Sie die JAR-Datei (oder zugehörige bereitstellbare Archivdateien) kompilieren und erstellen und das Artefakt signieren.
- Abhängigkeiten von Drittanbietern verwalten: Verwaltet Codeabhängigkeiten und Librarys von Drittanbietern mit Tools wie Snyk. Synk prüft und stellt sicher, dass Abhängigkeiten korrekt sind, aus einer akzeptierten Quelle stammen und sucht nach böswilligen Inhalten. Externe Abhängigkeitsartefakte werden abgerufen, geprüft, genehmigt und gespeichert. Durch die Verwaltung von Drittanbieterabhängigkeiten können Sie unsere Abhängigkeiten mit Tools wie Archiva, Nexus OSS usw. lokal speichern. Sie können Abhängigkeiten auch kontrollieren, um sicherzustellen, dass sie vertrauenswürdige Ursprünge haben. Dadurch kann sichergestellt werden, dass die Abhängigkeit nicht durch schädliche Inhalte beeinträchtigt wurde, indem Tools wie Snyk, Nexus oder scanOS verwendet werden.
- Qualität und Compliance prüfen
Suchen Sie nach OWASP Top 10-Problemen, und prüfen Sie die Compliance mit Codierungsstandards mit Tools wie Sonarcube oder Lint.
- Einheitentests ausführen
Führen Sie Einheitentests durch, und erfassen Sie Codeabdeckungsdaten mit JACOCO und JUnit. JACOCO stellt die Abdeckungssammlung bereit, z. B. sucht, welche Codezeilen ausgeführt wurden und wie viel Code auf statistische Weise getestet wurde. JUnit führt die Einheitentests aus. Sie können die Beschreibung erweitern, wenn Sie der Meinung sind, dass sie hilfreich ist.
- API-Tests ausführen
Tests der APIs mit Modelldaten und Testen von Clients mit Tools wie Dredd, Apiary oder Swagger Hub.
- Testkomponenten und Benutzererfahrung
Blackbox-Komponenten und UI-Elemente testen Misst die Performance, um sicherzustellen, dass keine grundlegenden Probleme vorliegen. Erfasst Testabdeckungsmetriken mit Tools wie Selenium und JMeter. JMeter führt Benutzererfahrungs- und Performancetests durch und testet die Benutzerworkflows. Selen steuert die Ausübung von Benutzeroberflächenelementen.
- Testsicherheit
Testen Sie Code auf Sicherheitslücken wie die Verarbeitung illegaler API-Aufrufe, überhöhte Payloads, Injection-Angriffe usw. mit Zap. Führen Sie Sicherheitstests durch, indem Sie nach redundantem Code und vorbereiteten SQL-Anweisungen suchen.
- Package für Deployment
Verpacken Sie die Lösung als Container, validieren Sie das Packaging, und prüfen Sie mit Tools wie Docker Snyk auf Containerprobleme und Best Practices.
- Dokumentation generieren
Generieren Sie nützliche Dokumentation, und stellen Sie sie für den Verbrauch zur Verfügung. Signieren Sie Artefakte mit Werkzeugen wie Pandoc oder Doxygen. Pandoc überträgt das Projekt in die nächste Phase und fügt es dem vertrauenswürdigen Speicher hinzu, z.B. einer Registry, die in der nächsten Phase verwendet werden soll.
Wenn einer dieser Schritte nicht erfolgreich verläuft oder der Prozess zu viele Warnungen erkennt, verläuft der Build nicht erfolgreich. Builds können zu jedem Zeitpunkt im Prozess ausfallen und verhindern, dass die nachfolgenden Schritte fortgesetzt werden. Ein nicht erfolgreicher Build verhindert die automatische Codepromotion, die konfiguriert wurde. Sie können einige der empfohlenen Tools für Builds mit mehreren Phasen verwenden, um die Ausführung von Tests in jeder Phase zu unterstützen. Beispiel: Tests auf Systemebene können API-Testtools verwenden, um als externer Service mit dem System zu interagieren, anstatt die Aktionen einer anderen Komponente in der Unternehmenslösung zu simulieren.