JUG Augsburg 24.10.2013 Seite 1
Wer sind wir? Agiler Architekt und Entwickler Eigenes Produkt mit kompletter Pipeline / CD aktuell: Architekt / Entwickler in einem großen Entwicklungsprojekt im Automotiv Berater für Software-Technik (Java / JEE) aktuell: PO-Support im CI-Team eines großen Entwicklungsprojektes im Automotiv Seite 2
Wo stehen wir? Deployment aus der IDE? Build via Script? (manuell oder vollständig automatisiert) Nightly Build? (inklusive Unit- und Integrations-Tests) Continuous Integration? (kontinuierliches Bauen und Testen (Jenkins, o.a.)) Continuous Delivery? (Deployment auf Integration oder Produktion) Seite 3
Agenda Einführung CI, CD, Jenkins Die Pipeline Praktisches Beispiel Herausforderungen Seite 4
Buzz Words Continuous Integration automatisiertes und kontinuierliches Bauen, Validieren und Testen Continuous Delivery in der Lage sein, ständig eine Version (auf Prod) auszuliefern (Build / Deployment) Pipeline CI Pattern um CI / CD umzusetzen Seite 5
Das Tool Build Server Java Applikation im Servlet-Container oder standalone Jobs checkout, build, test, deploy etc. konfigurierbar scriptbasierend möglich PlugIns mehr als 350 verschiedene Seite 6
Agenda Einführung CI, CD, Jenkins Die Pipeline Praktisches Beispiel Herausforderungen Seite 7
Pipeline CI-Pattern eine Software-Version durchläuft sequentiell alle Stufe der Pipeline Build Stage SMOKE Stage TEST Stage INT Stage PROD Stage Performance Code Quality Exploratory Test Seite 8
Build Stage kontinuierliches Bauen aus dem gemeinsamer Codebasis Artifakte erfolgreich bauen Unit-Test durchführen Stop-the-line bei Fehler Feedback wichtig! Seite 9
Build Jenkins unterstützt Ant, Maven, Gradle Shell, Batch Jenkins baut, wenn: Änderungen im SCM zeitgesteuert vorhergehender Job beendet ist andere Gründe (siehe Plugins) Seite 10
Deploy Generierte Artifakte werden mit Hilfe Jenkins deployt scp, ftp, Maven, Ant, Gradle Puppet, Chef Seite 11
Smoke Prüfung ob Software-Stand grundsätzlich läuft und testbar ist Integrationstests (im Container) Kurz! Feedback Seite 12
Regression Intensive Prüfung Software-Stand Fachliche Vollständigkeit Produktionsreife Feedback Seite 13
Feedback Jenkins veröffentlicht Build- oder Test-Ergebnisse Checkstyle, Findbugs, etc. Test Reports Seite 14
Agenda Einführung CI, CD, Jenkins Die Pipeline Praktisches Beispiel Herausforderungen Seite 15
Praktisches Beispiel Einfache Web-Applikation wird im Jenkins gebaut deployt getestet Seite 16
Agenda Einführung CI, CD, Jenkins Die Pipeline Praktisches Beispiel Herausforderungen Seite 17
Schnelles Feedback Performance Hardware Parallelisierung (Build und Test), Modularisierung (Technische) Testoptimierung Test-Management SMOKE / REGRESSION / NEW Nachsitzer (fehlgeschlagene Tests werden in einem eigenen Lauf nachgetestet) Seite 18
Stabilität Stabile Umgebung Pipeline muss permanent bereit stehen Rollen Verantwortung eigene Rolle (CI-Verantwortlicher) in großen Projekte eigenes Team Seite 19
Übersichtlichkeit Dashboard / Build History Jenkins Bordmittel Separiertes Feedback / Team-Lampen einzelne Teams / Verantwortliche Email Reports Nicht zu viel Nicht zu wenig Seite 20
sonstige Herausforderungen Configuration-Manangement infrastructure as code wenn nötig: eigenes Repro Data model Management Versionierung: Flyway Achtung! branch handling Test data Management auch Flyway Stammdaten vs. Testdaten Test Management Continuous Delivery the last mile Dev Ops Seite 21
Aktuelles Projekt-Umfeld Produkt: Java / JEE 6 Anwendung 2 Web Clients Diverse Schnittstellen Das Projekt ca. 80 Teammitglieder 5 Feature-Teams (Entwicklung) 4 Querschnitts-Teams (CI, Test, Architektur, UX) Seite 22
Die CI Umgebung Zentrale Jenkins Instanz (Linux) 6 Slaves (Windows) 6 Umgebungen (Glassfish, Oracle DB) Pipeline für Trunk 1 Branch (2er geplant) Integrations-Test, getaggt nach NEW, SMOKE, REGRESSION Story, Team Sonar Performance-Test Deployment auf Dev, Test und Integration Seite 23
Die Pipeline Build / Assembly alle 15 min. Erzeugt Master-Build-Version SMOKE (~1h) alle 1-2 h noch incl. NEW-Tests Parallel auf 2 Umgebungen REGRESSION (~3h) alle 4h Parallel auf 4 Umgebungen Reporting Eigenentwicklung Test-Report incl. Team- und Userstory-Zuordnung Build-History-Table (Maven-Site Erweiterung) Seite 24
Letzte Seite Fragen Diskussion Vielen Dank! Seite 25