Kontinuierliche Integration
-
Upload
johannes-weber -
Category
Documents
-
view
842 -
download
2
Transcript of Kontinuierliche Integration
![Page 1: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/1.jpg)
Johannes Weber
Kontinuierliche IntegrationWeb Services
![Page 2: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/2.jpg)
Johannes Weber
Warum kontinuierlich integrieren?
Frühzeitige erkennung von Fehlern
Minimierung manueller Arbeitsschritte
Lauffähige Softwareversionen zu jeder Zeit
Transparenz des Entwicklungsprozesses
Zufriedenheit mit dem eigenen Produkt
![Page 3: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/3.jpg)
Johannes Weber
Agenda
Klassische Integration
Grundlagen für Kontinuierliche Integration
Kontinuierliche Integration
Prozesse und Techniken im Detail
Continuous Deployment
![Page 4: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/4.jpg)
Johannes Weber
Klassische Integration
![Page 5: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/5.jpg)
Johannes Weber
Klassische Integration
Dieser Ansatz scheitert spätestends:
Mit größer werdenden Teams
![Page 6: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/6.jpg)
Johannes Weber
Klassische Integration
Dieser Ansatz scheitert spätestens:
Mit größer werdenden Teams
Mit komplexeren Projekten
![Page 7: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/7.jpg)
Johannes Weber
Agenda
Klassische Integration
Grundlagen für Kontinuierliche Integration
Kontinuierliche Integration
Prozesse und Techniken im Detail
Continuous Deployment
![Page 8: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/8.jpg)
Johannes Weber
Zurück zum Ausgangspunkt
![Page 9: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/9.jpg)
Johannes Weber
Grundvoraussetzungen
Versionsmanagement(https://artigo.pl:8080/trac/cms/login)
![Page 10: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/10.jpg)
Johannes Weber
Grundvoraussetzungen
Versionsmanagement
Automatisierte Tests
![Page 11: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/11.jpg)
Johannes Weber
Grundvoraussetzungen
Versionsmanagement
Automatisierte Tests
Buildmanagement
![Page 12: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/12.jpg)
Johannes Weber
Zwischenfazit
25% - Frühzeitige erkennung von Fehlern
Automatisierte Tests
50% - Minimierung manueller Arbeitsschritte
Buildautomatisierung
25% - Lauffähige Softwareversionen zu jeder Zeit
Versionsverwaltung
25% - Transparenz des Entwicklungsprozesses
Commithistory
31% - Zufriedenheit mit dem eigenen Produkt
![Page 13: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/13.jpg)
Johannes Weber
Agenda
Klassische Integration
Grundlagen für Kontinuierliche Integration
Kontinuierliche Integration
Prozesse und Techniken im Detail
Continuous Deployment
![Page 14: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/14.jpg)
Johannes Weber
Kontinuierliche Integration ist…
... Nicht nur ein Werkzeug, sondern hat Einfluss auf den gesamten Entwicklungsprozess
Jede Änderung wird zeitnahe eingecheckt
Die Versionsverwaltung ist kein Zwischenspeicher für fehlerhaften Quelltext
Fehlgeschlagene Builds werden umgehend gefixt, denn oberstes Ziel ist eine lauffähige Software
Mittels Buildscript führe jeder Entwickler vor einem Commit eine lokale Integration durch
![Page 15: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/15.jpg)
Johannes Weber
Etappenziel erreicht
![Page 16: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/16.jpg)
Johannes Weber
Zwischenfazit
50% - Frühzeitige erkennung von Fehlern
Automatisierte Tests, Testlauf nach jedem Commit
50% - Minimierung manueller Arbeitsschritte
Buildautomatisierung
50% - Lauffähige Softwareversionen zu jeder Zeit
Versionsverwaltung, CI-Version
25% - Transparenz des Entwicklungsprozesses
Commithistory, CI-Feedback
50% - Zufriedenheit mit dem eigenen Produkt
![Page 17: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/17.jpg)
Johannes Weber
Agenda
Klassische Integration
Grundlagen für Kontinuierliche Integration
Kontinuierliche Integration
Prozesse und Techniken im Detail
Continuous Deployment
![Page 18: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/18.jpg)
Johannes Weber
Versionsmanagement
Artefakt die versioniert werden sollten
Quellcode jeglicher Art
Konfigurationsdateien
Branches zur Trennung von Produktlinien
Releases und Features kommen in einem Branch
Tags
Releases und erfolgreiche Builds werden mit einem Tag versehen
![Page 19: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/19.jpg)
Johannes Weber
Tagging und Branching
![Page 20: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/20.jpg)
Johannes Weber
Komponenten bilden
svn:externals
Git submodule
PEAR Paket
![Page 21: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/21.jpg)
Johannes Weber
Vorteile der Komponentenbildung
Komponenten sind getrennt voneinender Testbar
Kürzere Zeitspanne zum Feedback
Es existieren immer stabile Versionen von Komponenten und der gesamten Software
Definierte und gut sichtbare Abhängigkeiten
![Page 22: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/22.jpg)
Johannes Weber
Testverfahren
Software und Akzeptanztests mit
PHPUnit, Selenium, Fitnesse
Statische Tests
Lint, PHPCPD, PHP_CodeSniffer, PHPMD
Last und Performance Tests
JMeter
![Page 23: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/23.jpg)
Johannes Weber
Statische Tests
Gerade bei modernen, browserbasierten Anwendungen ist ist syntaktische Korrektheit
Die einfachste Form der statischen Codeanalyse ist das lintern:
php –l
W3C CSS Validator
xmllint –html –noout http://www.example.com
Douglas Corckfords JSLint
![Page 24: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/24.jpg)
Johannes Weber
Programmierkonventionen
Ein häufig unterschätzter Qualitätsaspekt
Wo hinterlässt man eher Unrat?
Im keimfreien Operationssaal
Neben einer überquellenden Mülltonne
Reduziert die Einarbeitungszeit in Quelltext
PHP_CodeSniffer ist hier der Defacto-Standard
![Page 25: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/25.jpg)
Johannes Weber
Softwaremetriken
Eine Softwaremetrik ist eine Maßzahl für Qualitätsmerkmale von Software
Mathematische Funktion zur Ermittlung von Kennzahlen
Softwaremetriken ermöglichen die Kontrolle der qualidativen Entwicklung von Software
LOC (Lines of Code)
CCN (Cyclomatic Complexity Number)
Etc.
![Page 26: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/26.jpg)
Johannes Weber
Softwaremetriken
![Page 27: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/27.jpg)
Johannes Weber
Buildmanagement
Datenbanken
Anlegen/Löschen von Schemate und Testdaten
Automatisierung von Schemate-Migrationen
Für jede Änderung existiert der passende Rollback
Doctrine Migrate, DbDeploy
Automatisierung aller Schritte zur Erzeugung einer frei wählbaren Softwarekonfiguration
One Click Install
![Page 28: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/28.jpg)
Johannes Weber
Zwischenfazit
75% - Frühzeitige erkennung von Fehlern
Automatisierte Tests, Testlauf nach jedem Commit
75% - Minimierung manueller Arbeitsschritte
Buildautomatisierung, One Click Install
75% - Lauffähige Softwareversionen zu jeder Zeit
Versionsverwaltung, CI-Version, Tags
75% - Transparenz des Entwicklungsprozesses
Commithistory, CI-Feedback
75% - Zufriedenheit mit dem eigenen Produkt
![Page 29: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/29.jpg)
Johannes Weber
Agenda
Klassische Integration
Grundlagen für Kontinuierliche Integration
Kontinuierliche Integration
Prozesse und Techniken im Detail
Continuous Deployment
![Page 30: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/30.jpg)
Johannes Weber
Continuous Deployment
Was ist zu beachten?
CI-, Stage- und Live-System ident
Abgrenzung zw. Tagesgeschäft und Neuentwicklungen
Deployments erfolgen nur aus abgenommenen Bereich
Deployed wird immer auf die Stage Umgebung – letzte Abnahme
![Page 31: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/31.jpg)
Johannes Weber
Continuous Deployment
![Page 32: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/32.jpg)
Johannes Weber
Fazit
![Page 33: Kontinuierliche Integration](https://reader033.fdocuments.net/reader033/viewer/2022052505/5562d951d8b42aac778b4cbd/html5/thumbnails/33.jpg)
Johannes Weber
Danke!
?