Die perfekte Build-Pipeline Ohne Mühen Webprojekte bauen Qafoo GmbH October 25, 2012 Die perfekte Build-Pipeline 1 / 44
What comes next? Willkommen Die perfekte Build-Pipeline 2 / 44
Über uns Jakob Westhoff Mehr als 11 Jahre Erfahrung mit professioneller PHP Entwicklung Mehr als 8 Jahre professionelle JavaScript Erfahrung Open-Source Entusiast Regelmäßiger Sprecher auf (inter)nationalen Konferenzen Consultant, Trainer und Author Working with Qafoo passion for software quality Die perfekte Build-Pipeline 2 / 44
Über uns Manuel Pichler Diplominformatiker Mehr als 12 Jahre Erfahrung im PHP-Umfeld Autor hinter diversen QA-Tools Co-founders of Qafoo passion for software quality Die perfekte Build-Pipeline 2 / 44
Über uns Manuel Pichler Diplominformatiker Mehr als 12 Jahre Erfahrung im PHP-Umfeld Autor hinter diversen QA-Tools Co-founders of Qafoo passion for software quality We help people to create high quality web applications. Die perfekte Build-Pipeline 2 / 44
Über uns Manuel Pichler Diplominformatiker Mehr als 12 Jahre Erfahrung im PHP-Umfeld Autor hinter diversen QA-Tools Co-founders of Qafoo passion for software quality We help people to create high quality web applications. http://qafoo.com Die perfekte Build-Pipeline 2 / 44
Ziele dieser Session Motivation Anforderungen an ein Build-System für Web-Projekte Evaluation möglicher Kandidaten Vorstellung von Lösungsmöglichkeiten Die perfekte Build-Pipeline 5 / 44
What comes next? Motivation Die perfekte Build-Pipeline 6 / 44
Motivation Webprojekte sind extrem komplexe verteilte Systeme Viele verschiedene Dienste und Komponenten interagieren miteinander Unterschiedliche Setup-Prozesse für die einzelnen Systeme sind nötig Webprojekte setzen sich aus unterschiedlichen Sprachen zusammen (PHP, JavaScript,...) Metriken und Tests sollen mittels CI automatisiert ausgeführt und überwacht werden Deployment auf Application Server Die perfekte Build-Pipeline 6 / 44
Motivation Webprojekte sind extrem komplexe verteilte Systeme Viele verschiedene Dienste und Komponenten interagieren miteinander Unterschiedliche Setup-Prozesse für die einzelnen Systeme sind nötig Webprojekte setzen sich aus unterschiedlichen Sprachen zusammen (PHP, JavaScript,...) Metriken und Tests sollen mittels CI automatisiert ausgeführt und überwacht werden Deployment auf Application Server Die perfekte Build-Pipeline 6 / 44
Motivation Webprojekte sind extrem komplexe verteilte Systeme Viele verschiedene Dienste und Komponenten interagieren miteinander Unterschiedliche Setup-Prozesse für die einzelnen Systeme sind nötig Webprojekte setzen sich aus unterschiedlichen Sprachen zusammen (PHP, JavaScript,...) Metriken und Tests sollen mittels CI automatisiert ausgeführt und überwacht werden Deployment auf Application Server Die perfekte Build-Pipeline 6 / 44
Motivation Webprojekte sind extrem komplexe verteilte Systeme Viele verschiedene Dienste und Komponenten interagieren miteinander Unterschiedliche Setup-Prozesse für die einzelnen Systeme sind nötig Webprojekte setzen sich aus unterschiedlichen Sprachen zusammen (PHP, JavaScript,...) Metriken und Tests sollen mittels CI automatisiert ausgeführt und überwacht werden Deployment auf Application Server Die perfekte Build-Pipeline 6 / 44
Motivation Webprojekte sind extrem komplexe verteilte Systeme Viele verschiedene Dienste und Komponenten interagieren miteinander Unterschiedliche Setup-Prozesse für die einzelnen Systeme sind nötig Webprojekte setzen sich aus unterschiedlichen Sprachen zusammen (PHP, JavaScript,...) Metriken und Tests sollen mittels CI automatisiert ausgeführt und überwacht werden Deployment auf Application Server Die perfekte Build-Pipeline 6 / 44
Motivation Webprojekte sind extrem komplexe verteilte Systeme Viele verschiedene Dienste und Komponenten interagieren miteinander Unterschiedliche Setup-Prozesse für die einzelnen Systeme sind nötig Webprojekte setzen sich aus unterschiedlichen Sprachen zusammen (PHP, JavaScript,...) Metriken und Tests sollen mittels CI automatisiert ausgeführt und überwacht werden Deployment auf Application Server Die perfekte Build-Pipeline 6 / 44
Awesome Motivation Awesome Shop 0 articles 0.00 Shop Blog News Search Awesome Tweets Lorem ipsum dolor sit amet, consectetur 2 minutes ago Lorem ipsum dolor sit amet, consectetur 23 minutes ago Smartphone Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Comments 1337,-- 5 items in stock Lorem ipsum dolor sit amet, consectetur 42 minutes ago Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor. Heutige Webprojekte sind komplexe Applikationen Die perfekte Build-Pipeline 7 / 44
Awesome Motivation Shop Blog News Sie bestehen aus unterschiedlichen Sub-Applikationen Die perfekte Build-Pipeline 8 / 44
Awesome Motivation Shop Blog News Sie bestehen aus unterschiedlichen Sub-Applikationen Die perfekte Build-Pipeline 8 / 44
Awesome Motivation Shop Blog News Sie bestehen aus unterschiedlichen Sub-Applikationen Die perfekte Build-Pipeline 8 / 44
Awesome Motivation Shop Blog News Sie bestehen aus unterschiedlichen Sub-Applikationen Die perfekte Build-Pipeline 8 / 44
Awesome Motivation 0 articles 0.00 Shop Blog News Smartphone Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 1337,-- 5 items in stock Tiefe Abhängigkeitsbeziehungen sind keine Seltenheit Die perfekte Build-Pipeline 9 / 44
Awesome Motivation Shop Blog News Comments Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor. Gemeinsame Abhängigkeiten existieren Die perfekte Build-Pipeline 10 / 44
Awesome Motivation Search Externe Abhängigkeiten existieren: Solr,... Die perfekte Build-Pipeline 11 / 44
Awesome Motivation Awesome Tweets Lorem ipsum dolor sit amet, consectetur 2 minutes ago Lorem ipsum dolor sit amet, consectetur 23 minutes ago Lorem ipsum dolor sit amet, consectetur 42 minutes ago Multiple Sprachen finden Einsatz: Twitter JavaScript-API Die perfekte Build-Pipeline 12 / 44
Awesome Motivation Globales Resourcenmanagement ist erforderlich Die perfekte Build-Pipeline 13 / 44
Awesome Motivation Awesome Shop 0 articles 0.00 Shop Blog News Search Awesome Tweets Lorem ipsum dolor sit amet, consectetur 2 minutes ago Lorem ipsum dolor sit amet, consectetur 23 minutes ago Smartphone Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Comments 1337,-- 5 items in stock Lorem ipsum dolor sit amet, consectetur 42 minutes ago Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor. Händisch? Ohne Automatisierung? Die perfekte Build-Pipeline 14 / 44
Awesome Motivation Awesome Shop 0 articles 0.00 Shop Blog News Search Awesome Tweets Lorem ipsum dolor sit amet, consectetur 2 minutes ago Lorem ipsum dolor sit amet, consectetur 23 minutes ago Smartphone Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Comments 1337,-- 5 items in stock Lorem ipsum dolor sit amet, consectetur 42 minutes ago Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor. Händisch? Ohne Automatisierung? Ohne mich! Die perfekte Build-Pipeline 14 / 44
What comes next? Anforderungen Die perfekte Build-Pipeline 15 / 44
Anforderungen an ein Build-System Korrekte Behandlung des Software Lifecycle Einfache Konfiguration mit minimalem Aufwand Integrierte Unterstützung für bekannte Tools Einfach erweiterbar für spezielle Aufgaben Unabhängige Buildumgebung / Automatische Installation von Abhängigkeiten Abhängigkeitsmanagement zur Vermeidung doppelter Ausführung Die perfekte Build-Pipeline 15 / 44
Anforderungen an ein Build-System Korrekte Behandlung des Software Lifecycle Einfache Konfiguration mit minimalem Aufwand Integrierte Unterstützung für bekannte Tools Einfach erweiterbar für spezielle Aufgaben Unabhängige Buildumgebung / Automatische Installation von Abhängigkeiten Abhängigkeitsmanagement zur Vermeidung doppelter Ausführung Die perfekte Build-Pipeline 15 / 44
Anforderungen an ein Build-System Korrekte Behandlung des Software Lifecycle Einfache Konfiguration mit minimalem Aufwand Integrierte Unterstützung für bekannte Tools Einfach erweiterbar für spezielle Aufgaben Unabhängige Buildumgebung / Automatische Installation von Abhängigkeiten Abhängigkeitsmanagement zur Vermeidung doppelter Ausführung Die perfekte Build-Pipeline 15 / 44
Anforderungen an ein Build-System Korrekte Behandlung des Software Lifecycle Einfache Konfiguration mit minimalem Aufwand Integrierte Unterstützung für bekannte Tools Einfach erweiterbar für spezielle Aufgaben Unabhängige Buildumgebung / Automatische Installation von Abhängigkeiten Abhängigkeitsmanagement zur Vermeidung doppelter Ausführung Die perfekte Build-Pipeline 15 / 44
Anforderungen an ein Build-System Korrekte Behandlung des Software Lifecycle Einfache Konfiguration mit minimalem Aufwand Integrierte Unterstützung für bekannte Tools Einfach erweiterbar für spezielle Aufgaben Unabhängige Buildumgebung / Automatische Installation von Abhängigkeiten Abhängigkeitsmanagement zur Vermeidung doppelter Ausführung Die perfekte Build-Pipeline 15 / 44
Anforderungen an ein Build-System Korrekte Behandlung des Software Lifecycle Einfache Konfiguration mit minimalem Aufwand Integrierte Unterstützung für bekannte Tools Einfach erweiterbar für spezielle Aufgaben Unabhängige Buildumgebung / Automatische Installation von Abhängigkeiten Abhängigkeitsmanagement zur Vermeidung doppelter Ausführung Die perfekte Build-Pipeline 15 / 44
Anforderungen an ein Build-System Korrekte Behandlung des Software Lifecycle Einfache Konfiguration mit minimalem Aufwand Integrierte Unterstützung für bekannte Tools Einfach erweiterbar für spezielle Aufgaben Unabhängige Buildumgebung / Automatische Installation von Abhängigkeiten Abhängigkeitsmanagement zur Vermeidung doppelter Ausführung Die perfekte Build-Pipeline 15 / 44
Software Lifecycle Jedes Projekt hat nahezu den gleichen Software Lifecycle Die perfekte Build-Pipeline 16 / 44
Software Lifecycle Jedes Projekt hat nahezu den gleichen Software Lifecycle Source Checkout SQL Generation Configs Testing Reports Execution Deployment Packaging Die perfekte Build-Pipeline 16 / 44
Software Lifecycle Jedes Projekt hat nahezu den gleichen Software Lifecycle Build Testing Dokumentation Qualitätssicherung Deployment Asset-Management Die perfekte Build-Pipeline 16 / 44
Software Lifecycle Jedes Projekt hat nahezu den gleichen Software Lifecycle Build Testing Dokumentation Qualitätssicherung Deployment Asset-Management Die perfekte Build-Pipeline 16 / 44
Software Lifecycle Jedes Projekt hat nahezu den gleichen Software Lifecycle Build Testing Dokumentation Qualitätssicherung Deployment Asset-Management Die perfekte Build-Pipeline 16 / 44
Software Lifecycle Jedes Projekt hat nahezu den gleichen Software Lifecycle Build Testing Dokumentation Qualitätssicherung Deployment Asset-Management Die perfekte Build-Pipeline 16 / 44
Software Lifecycle Jedes Projekt hat nahezu den gleichen Software Lifecycle Build Testing Dokumentation Qualitätssicherung Deployment Asset-Management Die perfekte Build-Pipeline 16 / 44
Software Lifecycle Jedes Projekt hat nahezu den gleichen Software Lifecycle Build Testing Dokumentation Qualitätssicherung Deployment Asset-Management Die perfekte Build-Pipeline 16 / 44
Anforderungen an ein Build-System Korrekte Behandlung des Software Lifecycle Einfache Konfiguration mit minimalem Aufwand Integrierte Unterstützung für bekannte Tools Einfach erweiterbar für spezielle Aufgaben Unabhängige Buildumgebung / Automatische Installation von Abhängigkeiten Abhängigkeitsmanagement zur Vermeidung doppelter Ausführung Die perfekte Build-Pipeline 17 / 44
Einfache Konfiguration Convention over Configuration Andere machen es vor PEAR Symfony PSR-0 Warum sollte dies nicht auch für eine Buildumgebung gelten Buildprozess Verzeichnisstruktur Versionierung Namensgebung Verteilung / Distribution Die perfekte Build-Pipeline 18 / 44
Einfache Konfiguration Convention over Configuration Andere machen es vor PEAR Symfony PSR-0 Warum sollte dies nicht auch für eine Buildumgebung gelten Buildprozess Verzeichnisstruktur Versionierung Namensgebung Verteilung / Distribution Die perfekte Build-Pipeline 18 / 44
Einfache Konfiguration Convention over Configuration Andere machen es vor PEAR Symfony PSR-0 Warum sollte dies nicht auch für eine Buildumgebung gelten Buildprozess Verzeichnisstruktur Versionierung Namensgebung Verteilung / Distribution Die perfekte Build-Pipeline 18 / 44
Einfache Konfiguration Convention over Configuration Andere machen es vor PEAR Symfony PSR-0 Warum sollte dies nicht auch für eine Buildumgebung gelten Buildprozess Verzeichnisstruktur Versionierung Namensgebung Verteilung / Distribution Die perfekte Build-Pipeline 18 / 44
Einfache Konfiguration Convention over Configuration Andere machen es vor PEAR Symfony PSR-0 Warum sollte dies nicht auch für eine Buildumgebung gelten Buildprozess Verzeichnisstruktur Versionierung Namensgebung Verteilung / Distribution Die perfekte Build-Pipeline 18 / 44
Einfache Konfiguration Convention over Configuration Andere machen es vor PEAR Symfony PSR-0 Warum sollte dies nicht auch für eine Buildumgebung gelten Buildprozess Verzeichnisstruktur Versionierung Namensgebung Verteilung / Distribution Die perfekte Build-Pipeline 18 / 44
Einfache Konfiguration Convention over Configuration Andere machen es vor PEAR Symfony PSR-0 Warum sollte dies nicht auch für eine Buildumgebung gelten Buildprozess Verzeichnisstruktur Versionierung Namensgebung Verteilung / Distribution Die perfekte Build-Pipeline 18 / 44
Einfache Konfiguration Convention over Configuration Andere machen es vor PEAR Symfony PSR-0 Warum sollte dies nicht auch für eine Buildumgebung gelten Buildprozess Verzeichnisstruktur Versionierung Namensgebung Verteilung / Distribution Die perfekte Build-Pipeline 18 / 44
Einfache Konfiguration Convention over Configuration Andere machen es vor PEAR Symfony PSR-0 Warum sollte dies nicht auch für eine Buildumgebung gelten Buildprozess Verzeichnisstruktur Versionierung Namensgebung Verteilung / Distribution Die perfekte Build-Pipeline 18 / 44
Einfache Konfiguration Convention over Configuration Andere machen es vor PEAR Symfony PSR-0 Warum sollte dies nicht auch für eine Buildumgebung gelten Buildprozess Verzeichnisstruktur Versionierung Namensgebung Verteilung / Distribution Die perfekte Build-Pipeline 18 / 44
Einfache Konfiguration Convention over Configuration Andere machen es vor PEAR Symfony PSR-0 Warum sollte dies nicht auch für eine Buildumgebung gelten Buildprozess Verzeichnisstruktur Versionierung Namensgebung Verteilung / Distribution Die perfekte Build-Pipeline 18 / 44
Anforderungen an ein Build-System Korrekte Behandlung des Software Lifecycle Einfache Konfiguration mit minimalem Aufwand Integrierte Unterstützung für bekannte Tools Einfach erweiterbar für spezielle Aufgaben Unabhängige Buildumgebung / Automatische Installation von Abhängigkeiten Abhängigkeitsmanagement zur Vermeidung doppelter Ausführung Die perfekte Build-Pipeline 19 / 44
Unterstützung für bekannte Tools / Erweiterbarkeit Software Lifecycle gibt die Grundstruktur vor Jeder Buildschritt sollte non-invasiv erweiterbar sein Codegeneratoren Testwerkzeuge Distributionswerkzeuge QA-Tools Datenbank... Erweiterungen für gängige Tools sollten existieren Die perfekte Build-Pipeline 20 / 44
Unterstützung für bekannte Tools / Erweiterbarkeit Software Lifecycle gibt die Grundstruktur vor Jeder Buildschritt sollte non-invasiv erweiterbar sein Codegeneratoren Testwerkzeuge Distributionswerkzeuge QA-Tools Datenbank... Erweiterungen für gängige Tools sollten existieren Die perfekte Build-Pipeline 20 / 44
Unterstützung für bekannte Tools / Erweiterbarkeit Software Lifecycle gibt die Grundstruktur vor Jeder Buildschritt sollte non-invasiv erweiterbar sein Codegeneratoren Testwerkzeuge Distributionswerkzeuge QA-Tools Datenbank... Erweiterungen für gängige Tools sollten existieren Die perfekte Build-Pipeline 20 / 44
Unterstützung für bekannte Tools / Erweiterbarkeit Software Lifecycle gibt die Grundstruktur vor Jeder Buildschritt sollte non-invasiv erweiterbar sein Codegeneratoren Testwerkzeuge Distributionswerkzeuge QA-Tools Datenbank... Erweiterungen für gängige Tools sollten existieren Die perfekte Build-Pipeline 20 / 44
Unterstützung für bekannte Tools / Erweiterbarkeit Software Lifecycle gibt die Grundstruktur vor Jeder Buildschritt sollte non-invasiv erweiterbar sein Codegeneratoren Testwerkzeuge Distributionswerkzeuge QA-Tools Datenbank... Erweiterungen für gängige Tools sollten existieren Die perfekte Build-Pipeline 20 / 44
Unterstützung für bekannte Tools / Erweiterbarkeit Software Lifecycle gibt die Grundstruktur vor Jeder Buildschritt sollte non-invasiv erweiterbar sein Codegeneratoren Testwerkzeuge Distributionswerkzeuge QA-Tools Datenbank... Erweiterungen für gängige Tools sollten existieren Die perfekte Build-Pipeline 20 / 44
Unterstützung für bekannte Tools / Erweiterbarkeit Software Lifecycle gibt die Grundstruktur vor Jeder Buildschritt sollte non-invasiv erweiterbar sein Codegeneratoren Testwerkzeuge Distributionswerkzeuge QA-Tools Datenbank... Erweiterungen für gängige Tools sollten existieren Die perfekte Build-Pipeline 20 / 44
Unterstützung für bekannte Tools / Erweiterbarkeit Software Lifecycle gibt die Grundstruktur vor Jeder Buildschritt sollte non-invasiv erweiterbar sein Codegeneratoren Testwerkzeuge Distributionswerkzeuge QA-Tools Datenbank... Erweiterungen für gängige Tools sollten existieren Die perfekte Build-Pipeline 20 / 44
Unterstützung für bekannte Tools / Erweiterbarkeit Software Lifecycle gibt die Grundstruktur vor Jeder Buildschritt sollte non-invasiv erweiterbar sein Codegeneratoren Testwerkzeuge Distributionswerkzeuge QA-Tools Datenbank... Erweiterungen für gängige Tools sollten existieren Die perfekte Build-Pipeline 20 / 44
Anforderungen an ein Build-System Korrekte Behandlung des Software Lifecycle Einfache Konfiguration mit minimalem Aufwand Integrierte Unterstützung für bekannte Tools Einfach erweiterbar für spezielle Aufgaben Unabhängige Buildumgebung / Automatische Installation von Abhängigkeiten Abhängigkeitsmanagement zur Vermeidung doppelter Ausführung Die perfekte Build-Pipeline 21 / 44
Unabhängige Buildumgebung Ein Build der Software sollte möglich sein, ohne zuvor $n Abhängigkeiten installieren zu müssen Integration bekannter Packetmanager wie PEAR, Composer, npm, Bower,... wünschenswert Abhängigkeiten sollten lokal zum Projekt installiert werden Spezifische Versionen für jedes Projekt Keine unnötige Verunreinigung des Systems Sandboxed build in CI Systemen möglich Die perfekte Build-Pipeline 22 / 44
Unabhängige Buildumgebung Ein Build der Software sollte möglich sein, ohne zuvor $n Abhängigkeiten installieren zu müssen Integration bekannter Packetmanager wie PEAR, Composer, npm, Bower,... wünschenswert Abhängigkeiten sollten lokal zum Projekt installiert werden Spezifische Versionen für jedes Projekt Keine unnötige Verunreinigung des Systems Sandboxed build in CI Systemen möglich Die perfekte Build-Pipeline 22 / 44
Unabhängige Buildumgebung Ein Build der Software sollte möglich sein, ohne zuvor $n Abhängigkeiten installieren zu müssen Integration bekannter Packetmanager wie PEAR, Composer, npm, Bower,... wünschenswert Abhängigkeiten sollten lokal zum Projekt installiert werden Spezifische Versionen für jedes Projekt Keine unnötige Verunreinigung des Systems Sandboxed build in CI Systemen möglich Die perfekte Build-Pipeline 22 / 44
Anforderungen an ein Build-System Korrekte Behandlung des Software Lifecycle Einfache Konfiguration mit minimalem Aufwand Integrierte Unterstützung für bekannte Tools Einfach erweiterbar für spezielle Aufgaben Unabhängige Buildumgebung / Automatische Installation von Abhängigkeiten Abhängigkeitsmanagement zur Vermeidung doppelter Ausführung Die perfekte Build-Pipeline 23 / 44
Abhängigkeitsmanagement Das Build-System sollte die Abhängigkeiten des Software Lifecycles kennen Automatische Bestimmung der nötigen Schritte zum Erreichen eines bestimmten Ziels Berücksichtigung bereits erzeugter Zwischenergebnisse zur Beschleunigung des Prozesses Die perfekte Build-Pipeline 24 / 44
Abhängigkeitsmanagement Das Build-System sollte die Abhängigkeiten des Software Lifecycles kennen Automatische Bestimmung der nötigen Schritte zum Erreichen eines bestimmten Ziels Berücksichtigung bereits erzeugter Zwischenergebnisse zur Beschleunigung des Prozesses Die perfekte Build-Pipeline 24 / 44
Abhängigkeitsmanagement Das Build-System sollte die Abhängigkeiten des Software Lifecycles kennen Automatische Bestimmung der nötigen Schritte zum Erreichen eines bestimmten Ziels Berücksichtigung bereits erzeugter Zwischenergebnisse zur Beschleunigung des Prozesses Die perfekte Build-Pipeline 24 / 44
What comes next? Evaluation Die perfekte Build-Pipeline 25 / 44
Mögliche Kandidaten Custom Scripts Phing Pake Ant Maven Capistrano Fabric GruntJs... und noch viele Weitere Die perfekte Build-Pipeline 25 / 44
Mögliche Kandidaten Custom Scripts Phing Pake Ant Maven Capistrano Fabric GruntJs... und noch viele Weitere Die perfekte Build-Pipeline 25 / 44
Custom Scripts Pro Contra Maximale Flexibilität Scriptsprache der Wahl Systemnahe Verwendung externer Tools Niedrige Lernkurve/Einstiegshürde Plattform-spezifisch Projekt-spezifisch Keine einfache Wiederverwendbarkeit Schnell sinkende Wartbarkeit Die perfekte Build-Pipeline 26 / 44
Custom Scripts Pro Contra Maximale Flexibilität Scriptsprache der Wahl Systemnahe Verwendung externer Tools Niedrige Lernkurve/Einstiegshürde Plattform-spezifisch Projekt-spezifisch Keine einfache Wiederverwendbarkeit Schnell sinkende Wartbarkeit Die perfekte Build-Pipeline 26 / 44
Ant Pro Contra Plattform-unabhängig Gute IDE Integration Integriertes Abhängigkeits-Management Ausgereift und gut dokumentiert Projekt-spezifisch Ausufernde XML-Syntax Keine einfache Wiederverwendbarkeit Java Runtime benötigt Die perfekte Build-Pipeline 27 / 44
Ant Pro Contra Plattform-unabhängig Gute IDE Integration Integriertes Abhängigkeits-Management Ausgereift und gut dokumentiert Projekt-spezifisch Ausufernde XML-Syntax Keine einfache Wiederverwendbarkeit Java Runtime benötigt Die perfekte Build-Pipeline 27 / 44
Ant Pro Contra Plattform-unabhängig Gute IDE Integration Integriertes Abhängigkeits-Management Ausgereift und gut dokumentiert Projekt-spezifisch Ausufernde XML-Syntax Keine einfache Wiederverwendbarkeit Java Runtime benötigt Die perfekte Build-Pipeline 27 / 44
Phing Pro Keine Java Runtime benötigt Integriertes Abhängigkeits-Management Gute PHPStorm Integration Contra Projekt-spezifisch Ausufernde XML-Syntax Keine einfache Wiederverwendbarkeit PHP benötigt ;-) Die perfekte Build-Pipeline 28 / 44
Phing Pro Keine Java Runtime benötigt PHP basiertes System Integriertes Abhängigkeits-Management Gute PHPStorm Integration Contra Projekt-spezifisch Ausufernde XML-Syntax Keine einfache Wiederverwendbarkeit PHP benötigt ;-) Die perfekte Build-Pipeline 28 / 44
Phing Pro Keine Java Runtime benötigt PHP basiertes System Integriertes Abhängigkeits-Management Gute PHPStorm Integration Contra Projekt-spezifisch Ausufernde XML-Syntax Keine einfache Wiederverwendbarkeit PHP benötigt ;-) Die perfekte Build-Pipeline 28 / 44
Phing Pro Keine Java Runtime benötigt PHP basiertes System Integriertes Abhängigkeits-Management Gute PHPStorm Integration Contra Projekt-spezifisch Ausufernde XML-Syntax Keine einfache Wiederverwendbarkeit PHP benötigt ;-) Die perfekte Build-Pipeline 28 / 44
Maven Pro Contra Convention over Configuration Ausgereifter Software Lifecycle mit Erweiterungspunkten Multi-Projekt-Untestützung Maven-PHP-Plugin existiert Schwerpunkt auf Java-Projekte und Entwicklung Steile Lernkurve Java Runtime benötigt Die perfekte Build-Pipeline 29 / 44
Maven Pro Contra Convention over Configuration Ausgereifter Software Lifecycle mit Erweiterungspunkten Multi-Projekt-Untestützung Maven-PHP-Plugin existiert Schwerpunkt auf Java-Projekte und Entwicklung Steile Lernkurve Java Runtime benötigt Die perfekte Build-Pipeline 29 / 44
GruntJs Pro Contra Niedrige Lernkurve/Einstiegshürde Große Anzahl existierender Module/Templates Gute Dokumentation JavaScript spezifisch Kein Dependency Management Nodesjs benötigt Die perfekte Build-Pipeline 30 / 44
GruntJs Pro Contra Niedrige Lernkurve/Einstiegshürde Große Anzahl existierender Module/Templates Gute Dokumentation JavaScript spezifisch Kein Dependency Management Nodesjs benötigt Die perfekte Build-Pipeline 30 / 44
Ergebnis der Evaluation Keines der Buildsysteme erfüllt alle Anforderungen Jedes system-unabhängige Tool benötigt eine spezielle Laufzeit-Umgebung Maven erfüllt offensichtlich die meisten Anforderungen Formalisiert den Buildprozess vollständig Setzt sehr stark auf Konventionen Definiert durchdachte Strukturen Modulare und Erweiterbare Architektur Leider fügt sich Maven auch mit dem PHP-Plugin nur bedingt in den Entwicklungsprozess von PHP-Webprojekten ein Die perfekte Build-Pipeline 31 / 44
Ergebnis der Evaluation Keines der Buildsysteme erfüllt alle Anforderungen Jedes system-unabhängige Tool benötigt eine spezielle Laufzeit-Umgebung Maven erfüllt offensichtlich die meisten Anforderungen Formalisiert den Buildprozess vollständig Setzt sehr stark auf Konventionen Definiert durchdachte Strukturen Modulare und Erweiterbare Architektur Leider fügt sich Maven auch mit dem PHP-Plugin nur bedingt in den Entwicklungsprozess von PHP-Webprojekten ein Die perfekte Build-Pipeline 31 / 44
Ergebnis der Evaluation Keines der Buildsysteme erfüllt alle Anforderungen Jedes system-unabhängige Tool benötigt eine spezielle Laufzeit-Umgebung Maven erfüllt offensichtlich die meisten Anforderungen Formalisiert den Buildprozess vollständig Setzt sehr stark auf Konventionen Definiert durchdachte Strukturen Modulare und Erweiterbare Architektur Leider fügt sich Maven auch mit dem PHP-Plugin nur bedingt in den Entwicklungsprozess von PHP-Webprojekten ein Die perfekte Build-Pipeline 31 / 44
Ergebnis der Evaluation Keines der Buildsysteme erfüllt alle Anforderungen Jedes system-unabhängige Tool benötigt eine spezielle Laufzeit-Umgebung Maven erfüllt offensichtlich die meisten Anforderungen Formalisiert den Buildprozess vollständig Setzt sehr stark auf Konventionen Definiert durchdachte Strukturen Modulare und Erweiterbare Architektur Leider fügt sich Maven auch mit dem PHP-Plugin nur bedingt in den Entwicklungsprozess von PHP-Webprojekten ein Die perfekte Build-Pipeline 31 / 44
Ergebnis der Evaluation Keines der Buildsysteme erfüllt alle Anforderungen Jedes system-unabhängige Tool benötigt eine spezielle Laufzeit-Umgebung Maven erfüllt offensichtlich die meisten Anforderungen Formalisiert den Buildprozess vollständig Setzt sehr stark auf Konventionen Definiert durchdachte Strukturen Modulare und Erweiterbare Architektur Leider fügt sich Maven auch mit dem PHP-Plugin nur bedingt in den Entwicklungsprozess von PHP-Webprojekten ein Die perfekte Build-Pipeline 31 / 44
Ergebnis der Evaluation Eine Alternative muss her! Die Struktur, Konzepte und Flexibilität von Maven Ausgerichtet am Workflow von PHP-Webprojekten ABC Die perfekte Build-Pipeline 32 / 44
Ergebnis der Evaluation Eine Alternative muss her! Die Struktur, Konzepte und Flexibilität von Maven Ausgerichtet am Workflow von PHP-Webprojekten ABC Die perfekte Build-Pipeline 32 / 44
Ergebnis der Evaluation Eine Alternative muss her! Die Struktur, Konzepte und Flexibilität von Maven Ausgerichtet am Workflow von PHP-Webprojekten ABC Die perfekte Build-Pipeline 32 / 44
Ergebnis der Evaluation Eine Alternative muss her! Die Struktur, Konzepte und Flexibilität von Maven Ausgerichtet am Workflow von PHP-Webprojekten ABC Die perfekte Build-Pipeline 32 / 44
Ergebnis der Evaluation Eine Alternative muss her! Die Struktur, Konzepte und Flexibilität von Maven Ausgerichtet am Workflow von PHP-Webprojekten ABC... Häh? Die perfekte Build-Pipeline 32 / 44
Ergebnis der Evaluation Eine Alternative muss her! Die Struktur, Konzepte und Flexibilität von Maven Ausgerichtet am Workflow von PHP-Webprojekten Ant-Build-Commons Die perfekte Build-Pipeline 32 / 44
Ant-Build-Commons Die Struktur, Konzepte und Flexibilität von Maven Ausgerichtet am Workflow von PHP-Webprojekten ;-) Die perfekte Build-Pipeline 33 / 44
Ant-Build-Commons Die Struktur, Konzepte und Flexibilität von Maven Ausgerichtet am Workflow von PHP-Webprojekten ;-) Die perfekte Build-Pipeline 33 / 44
Ant-Build-Commons OpenSource Build-System unter New-BSD license Basiert auf Apache Ant Initial entwickelt von Manuel im Kontext von PHP Depend, PHPMD, staticreflection,... Weiterentwickelt und gepflegt von Qafoo Die perfekte Build-Pipeline 34 / 44
Ant-Build-Commons OpenSource Build-System unter New-BSD license Basiert auf Apache Ant Initial entwickelt von Manuel im Kontext von PHP Depend, PHPMD, staticreflection,... Weiterentwickelt und gepflegt von Qafoo Die perfekte Build-Pipeline 34 / 44
Ant-Build-Commons OpenSource Build-System unter New-BSD license Basiert auf Apache Ant Initial entwickelt von Manuel im Kontext von PHP Depend, PHPMD, staticreflection,... Weiterentwickelt und gepflegt von Qafoo Die perfekte Build-Pipeline 34 / 44
Ant-Build-Commons OpenSource Build-System unter New-BSD license Basiert auf Apache Ant Initial entwickelt von Manuel im Kontext von PHP Depend, PHPMD, staticreflection,... Weiterentwickelt und gepflegt von Qafoo Die perfekte Build-Pipeline 34 / 44
Minimaler Konfigurationsaufwand Die perfekte Build-Pipeline 35 / 44
Minimaler Konfigurationsaufwand Die perfekte Build-Pipeline 35 / 44
Minimaler Konfigurationsaufwand build.xml 1 <?xml version= 1.0 encoding= UTF 8?> 2 <project name= PHP Depend basedir =. > 3 <property f i l e = b u i l d. p r o p e r t i e s /> 4 5 <import f i l e = setup / src / main / xml / base. xml /> 6 < / project> build.properties 1 p r o j e c t. u r i = pdepend. org 2 p r o j e c t. name = pdepend 3 p r o j e c t. version = 1. 1. 0 4 p r o j e c t. s t a b i l i t y = s t a b l e Die perfekte Build-Pipeline 36 / 44
Minimaler Konfigurationsaufwand build.xml 1 <?xml version= 1.0 encoding= UTF 8?> 2 <project name= PHP Depend basedir =. > 3 <property f i l e = b u i l d. p r o p e r t i e s /> 4 5 <import f i l e = setup / src / main / xml / base. xml /> 6 < / project> build.properties 1 p r o j e c t. u r i = pdepend. org 2 p r o j e c t. name = pdepend 3 p r o j e c t. version = 1. 1. 0 4 p r o j e c t. s t a b i l i t y = s t a b l e Die perfekte Build-Pipeline 36 / 44
Minimaler Konfigurationsaufwand build.xml 1 <?xml version= 1.0 encoding= UTF 8?> 2 <project name= PHP Depend basedir =. > 3 <property f i l e = b u i l d. p r o p e r t i e s /> 4 5 <import f i l e = setup / src / main / xml / base. xml /> 6 < / project> build.properties 1 p r o j e c t. u r i = pdepend. org 2 p r o j e c t. name = pdepend 3 p r o j e c t. version = 1. 1. 0 4 p r o j e c t. s t a b i l i t y = s t a b l e Die perfekte Build-Pipeline 36 / 44
Minimaler Konfigurationsaufwand build.xml 1 <?xml version= 1.0 encoding= UTF 8?> 2 <project name= PHP Depend basedir =. > 3 <property f i l e = b u i l d. p r o p e r t i e s /> 4 5 <import f i l e = setup / src / main / xml / base. xml /> 6 < / project> build.properties 1 p r o j e c t. u r i = pdepend. org 2 p r o j e c t. name = pdepend 3 p r o j e c t. version = 1. 1. 0 4 p r o j e c t. s t a b i l i t y = s t a b l e Die perfekte Build-Pipeline 36 / 44
Fest definierter Software Lifecycle initialize compile test bundle package integration-test verify install deploy Ant-Extension-Points für jeden Build-Schritt Mitgelieferte Extensions Database PhpUnit PHPMD DbDeploy RequireJS Composer jshint Sonar... Die perfekte Build-Pipeline 37 / 44
Fest definierter Software Lifecycle initialize compile test bundle package integration-test verify install deploy Ant-Extension-Points für jeden Build-Schritt Mitgelieferte Extensions Database PhpUnit PHPMD DbDeploy RequireJS Composer jshint Sonar... Die perfekte Build-Pipeline 37 / 44
Fest definierter Software Lifecycle initialize compile test bundle package integration-test verify install deploy Ant-Extension-Points für jeden Build-Schritt Mitgelieferte Extensions Database PhpUnit PHPMD DbDeploy RequireJS Composer jshint Sonar... Die perfekte Build-Pipeline 37 / 44
Fest definierter Software Lifecycle initialize compile test bundle package integration-test verify install deploy Ant-Extension-Points für jeden Build-Schritt Mitgelieferte Extensions Database PhpUnit PHPMD DbDeploy RequireJS Composer jshint Sonar... Die perfekte Build-Pipeline 37 / 44
Fest definierter Software Lifecycle initialize compile test bundle package integration-test verify install deploy Ant-Extension-Points für jeden Build-Schritt Mitgelieferte Extensions Database PhpUnit PHPMD DbDeploy RequireJS Composer jshint Sonar... Die perfekte Build-Pipeline 37 / 44
Fest definierter Software Lifecycle initialize compile test bundle package integration-test verify install deploy Ant-Extension-Points für jeden Build-Schritt Mitgelieferte Extensions Database PhpUnit PHPMD DbDeploy RequireJS Composer jshint Sonar... Die perfekte Build-Pipeline 37 / 44
Fest definierter Software Lifecycle initialize compile test bundle package integration-test verify install deploy Ant-Extension-Points für jeden Build-Schritt Mitgelieferte Extensions Database PhpUnit PHPMD DbDeploy RequireJS Composer jshint Sonar... Die perfekte Build-Pipeline 37 / 44
Fest definierter Software Lifecycle initialize compile test bundle package integration-test verify install deploy Ant-Extension-Points für jeden Build-Schritt Mitgelieferte Extensions Database PhpUnit PHPMD DbDeploy RequireJS Composer jshint Sonar... Die perfekte Build-Pipeline 37 / 44
Fest definierter Software Lifecycle initialize compile test bundle package integration-test verify install deploy Ant-Extension-Points für jeden Build-Schritt Mitgelieferte Extensions Database PhpUnit PHPMD DbDeploy RequireJS Composer jshint Sonar... Die perfekte Build-Pipeline 37 / 44
Fest definierter Software Lifecycle initialize compile test bundle package integration-test verify install deploy Ant-Extension-Points für jeden Build-Schritt Mitgelieferte Extensions Database PhpUnit PHPMD DbDeploy RequireJS Composer jshint Sonar... Die perfekte Build-Pipeline 37 / 44
Fest definierter Software Lifecycle initialize compile test bundle package integration-test verify install deploy Ant-Extension-Points für jeden Build-Schritt Mitgelieferte Extensions Database PhpUnit PHPMD DbDeploy RequireJS Composer jshint Sonar... Die perfekte Build-Pipeline 37 / 44
Convention over Configuration Standartisierte Verzeichnisstruktur build/ dist/ logs/ src/ bin/ conf/ main/ js/ php/ resources/ test/ js/ php/ resources/ Alle Datei- und Verzeichnisnamen sind vollständig konfigurierbar Die perfekte Build-Pipeline 38 / 44
Convention over Configuration Standartisierte Verzeichnisstruktur build/ dist/ logs/ src/ bin/ conf/ main/ js/ php/ resources/ test/ js/ php/ resources/ Alle Datei- und Verzeichnisnamen sind vollständig konfigurierbar Die perfekte Build-Pipeline 38 / 44
Convention over Configuration Standartisierte Verzeichnisstruktur build/ dist/ logs/ src/ bin/ conf/ main/ js/ php/ resources/ test/ js/ php/ resources/ Alle Datei- und Verzeichnisnamen sind vollständig konfigurierbar Die perfekte Build-Pipeline 38 / 44
Convention over Configuration Standartisierte Verzeichnisstruktur build/ dist/ logs/ src/ bin/ conf/ main/ js/ php/ resources/ test/ js/ php/ resources/ Alle Datei- und Verzeichnisnamen sind vollständig konfigurierbar Die perfekte Build-Pipeline 38 / 44
Convention over Configuration Standartisierte Verzeichnisstruktur build/ dist/ logs/ src/ bin/ conf/ main/ js/ php/ resources/ test/ js/ php/ resources/ Alle Datei- und Verzeichnisnamen sind vollständig konfigurierbar Die perfekte Build-Pipeline 38 / 44
Convention over Configuration Standartisierte Verzeichnisstruktur build/ dist/ logs/ src/ bin/ conf/ main/ js/ php/ resources/ test/ js/ php/ resources/ Alle Datei- und Verzeichnisnamen sind vollständig konfigurierbar Die perfekte Build-Pipeline 38 / 44
Convention over Configuration Standartisierte Verzeichnisstruktur build/ dist/ logs/ src/ bin/ conf/ main/ js/ php/ resources/ test/ js/ php/ resources/ Alle Datei- und Verzeichnisnamen sind vollständig konfigurierbar Die perfekte Build-Pipeline 38 / 44
Unabhängige Buildumgebung Minimale Abhängigkeiten Automatische Installation benötigter Komponenten Projekt-Abhängigkeits-Verwaltung mittels Composer und PEAR ABC installiert Abhängigkeiten grundsätzlich lokal zum Projekt für einen Sandboxed-Build Die perfekte Build-Pipeline 39 / 44
Unabhängige Buildumgebung Minimale Abhängigkeiten Automatische Installation benötigter Komponenten Projekt-Abhängigkeits-Verwaltung mittels Composer und PEAR ABC installiert Abhängigkeiten grundsätzlich lokal zum Projekt für einen Sandboxed-Build Die perfekte Build-Pipeline 39 / 44
Weitere Features Unterschiedliche Build-Environments (testing, production,...) Unterstützung von JavaScript Projekten (requirejs, uglifyjs, jslint, jshint, js-test-driver) (beta) Subprojekt-Unterstützung Asset-Management Unterstützung (beta) Generierung und Management von Projektseiten Vagrant-Integration Verteilte Ausführung auf mehreren Nodes Diverse QA-Tools (PHPMD, PDepend, CodeSniffer,...)... Die perfekte Build-Pipeline 40 / 44
Weitere Features Unterschiedliche Build-Environments (testing, production,...) Unterstützung von JavaScript Projekten (requirejs, uglifyjs, jslint, jshint, js-test-driver) (beta) Subprojekt-Unterstützung Asset-Management Unterstützung (beta) Generierung und Management von Projektseiten Vagrant-Integration Verteilte Ausführung auf mehreren Nodes Diverse QA-Tools (PHPMD, PDepend, CodeSniffer,...)... Die perfekte Build-Pipeline 40 / 44
Weitere Features Unterschiedliche Build-Environments (testing, production,...) Unterstützung von JavaScript Projekten (requirejs, uglifyjs, jslint, jshint, js-test-driver) (beta) Subprojekt-Unterstützung Asset-Management Unterstützung (beta) Generierung und Management von Projektseiten Vagrant-Integration Verteilte Ausführung auf mehreren Nodes Diverse QA-Tools (PHPMD, PDepend, CodeSniffer,...)... Die perfekte Build-Pipeline 40 / 44
Weitere Features Unterschiedliche Build-Environments (testing, production,...) Unterstützung von JavaScript Projekten (requirejs, uglifyjs, jslint, jshint, js-test-driver) (beta) Subprojekt-Unterstützung Asset-Management Unterstützung (beta) Generierung und Management von Projektseiten Vagrant-Integration Verteilte Ausführung auf mehreren Nodes Diverse QA-Tools (PHPMD, PDepend, CodeSniffer,...)... Die perfekte Build-Pipeline 40 / 44
Weitere Features Unterschiedliche Build-Environments (testing, production,...) Unterstützung von JavaScript Projekten (requirejs, uglifyjs, jslint, jshint, js-test-driver) (beta) Subprojekt-Unterstützung Asset-Management Unterstützung (beta) Generierung und Management von Projektseiten Vagrant-Integration Verteilte Ausführung auf mehreren Nodes Diverse QA-Tools (PHPMD, PDepend, CodeSniffer,...)... Die perfekte Build-Pipeline 40 / 44
Weitere Features Unterschiedliche Build-Environments (testing, production,...) Unterstützung von JavaScript Projekten (requirejs, uglifyjs, jslint, jshint, js-test-driver) (beta) Subprojekt-Unterstützung Asset-Management Unterstützung (beta) Generierung und Management von Projektseiten Vagrant-Integration Verteilte Ausführung auf mehreren Nodes Diverse QA-Tools (PHPMD, PDepend, CodeSniffer,...)... Die perfekte Build-Pipeline 40 / 44
Weitere Features Unterschiedliche Build-Environments (testing, production,...) Unterstützung von JavaScript Projekten (requirejs, uglifyjs, jslint, jshint, js-test-driver) (beta) Subprojekt-Unterstützung Asset-Management Unterstützung (beta) Generierung und Management von Projektseiten Vagrant-Integration Verteilte Ausführung auf mehreren Nodes Diverse QA-Tools (PHPMD, PDepend, CodeSniffer,...)... Die perfekte Build-Pipeline 40 / 44
Weitere Features Unterschiedliche Build-Environments (testing, production,...) Unterstützung von JavaScript Projekten (requirejs, uglifyjs, jslint, jshint, js-test-driver) (beta) Subprojekt-Unterstützung Asset-Management Unterstützung (beta) Generierung und Management von Projektseiten Vagrant-Integration Verteilte Ausführung auf mehreren Nodes Diverse QA-Tools (PHPMD, PDepend, CodeSniffer,...)... Die perfekte Build-Pipeline 40 / 44
Weitere Features Unterschiedliche Build-Environments (testing, production,...) Unterstützung von JavaScript Projekten (requirejs, uglifyjs, jslint, jshint, js-test-driver) (beta) Subprojekt-Unterstützung Asset-Management Unterstützung (beta) Generierung und Management von Projektseiten Vagrant-Integration Verteilte Ausführung auf mehreren Nodes Diverse QA-Tools (PHPMD, PDepend, CodeSniffer,...)... Die perfekte Build-Pipeline 40 / 44
Weitere Features Unterschiedliche Build-Environments (testing, production,...) Unterstützung von JavaScript Projekten (requirejs, uglifyjs, jslint, jshint, js-test-driver) (beta) Subprojekt-Unterstützung Asset-Management Unterstützung (beta) Generierung und Management von Projektseiten Vagrant-Integration Verteilte Ausführung auf mehreren Nodes Diverse QA-Tools (PHPMD, PDepend, CodeSniffer,...)... Die perfekte Build-Pipeline 40 / 44
Weitere Features Unterschiedliche Build-Environments (testing, production,...) Unterstützung von JavaScript Projekten (requirejs, uglifyjs, jslint, jshint, js-test-driver) (beta) Subprojekt-Unterstützung Asset-Management Unterstützung (beta) Generierung und Management von Projektseiten Vagrant-Integration Verteilte Ausführung auf mehreren Nodes Diverse QA-Tools (PHPMD, PDepend, CodeSniffer,...)... Die perfekte Build-Pipeline 40 / 44
What comes next? Demo Time! Die perfekte Build-Pipeline 41 / 44
What comes next? Fazit Die perfekte Build-Pipeline 42 / 44
Fazit Build-Systeme sind aufgrund hoher Komplexität und Systemvielfalt ein Muss heutiger Web-Projekte Die Festlegung auf ein spezifisches System bietet viele Vorteile Messbare Zeitersparnis beim Projektwechsel Einheitlicher Prozess auf allen Systemen Development Continuous-Integration Testing/Stageing Production Extrem geringer Konfigurationsaufwand bei neuen Projekten Wiederverwendbarkeit von Modulen durch klare Strukturierung Die perfekte Build-Pipeline 42 / 44
Fazit Build-Systeme sind aufgrund hoher Komplexität und Systemvielfalt ein Muss heutiger Web-Projekte Die Festlegung auf ein spezifisches System bietet viele Vorteile Messbare Zeitersparnis beim Projektwechsel Einheitlicher Prozess auf allen Systemen Development Continuous-Integration Testing/Stageing Production Extrem geringer Konfigurationsaufwand bei neuen Projekten Wiederverwendbarkeit von Modulen durch klare Strukturierung Die perfekte Build-Pipeline 42 / 44
Fazit Build-Systeme sind aufgrund hoher Komplexität und Systemvielfalt ein Muss heutiger Web-Projekte Die Festlegung auf ein spezifisches System bietet viele Vorteile Messbare Zeitersparnis beim Projektwechsel Einheitlicher Prozess auf allen Systemen Development Continuous-Integration Testing/Stageing Production Extrem geringer Konfigurationsaufwand bei neuen Projekten Wiederverwendbarkeit von Modulen durch klare Strukturierung Die perfekte Build-Pipeline 42 / 44
Fazit Build-Systeme sind aufgrund hoher Komplexität und Systemvielfalt ein Muss heutiger Web-Projekte Die Festlegung auf ein spezifisches System bietet viele Vorteile Messbare Zeitersparnis beim Projektwechsel Einheitlicher Prozess auf allen Systemen Development Continuous-Integration Testing/Stageing Production Extrem geringer Konfigurationsaufwand bei neuen Projekten Wiederverwendbarkeit von Modulen durch klare Strukturierung Die perfekte Build-Pipeline 42 / 44
Fazit Build-Systeme sind aufgrund hoher Komplexität und Systemvielfalt ein Muss heutiger Web-Projekte Die Festlegung auf ein spezifisches System bietet viele Vorteile Messbare Zeitersparnis beim Projektwechsel Einheitlicher Prozess auf allen Systemen Development Continuous-Integration Testing/Stageing Production Extrem geringer Konfigurationsaufwand bei neuen Projekten Wiederverwendbarkeit von Modulen durch klare Strukturierung Die perfekte Build-Pipeline 42 / 44
Fazit Build-Systeme sind aufgrund hoher Komplexität und Systemvielfalt ein Muss heutiger Web-Projekte Die Festlegung auf ein spezifisches System bietet viele Vorteile Messbare Zeitersparnis beim Projektwechsel Einheitlicher Prozess auf allen Systemen Development Continuous-Integration Testing/Stageing Production Extrem geringer Konfigurationsaufwand bei neuen Projekten Wiederverwendbarkeit von Modulen durch klare Strukturierung Die perfekte Build-Pipeline 42 / 44
ABC - Fazit Einsatz in OpenSource Projekten Schnelles Aufsetzen einer neuen Umgebung Minimaler Aufwand beim Wechsel zwischen Projekten Einfachere Adaption der Benutzer durch vollständig integrierten Build-Prozess Einsatz in Kunden Projekten Einfache Integration in bestehende Projektstrukturen Anpassung an bestehende Prozesse war möglich Fehlender Support diverser Tools zeigte Schwachtstellen auf......die halfen das Projekt zu verbessern Mit jeder weiteren Extension wird ABC besser und mächtiger Die perfekte Build-Pipeline 43 / 44
ABC - Fazit Einsatz in OpenSource Projekten Schnelles Aufsetzen einer neuen Umgebung Minimaler Aufwand beim Wechsel zwischen Projekten Einfachere Adaption der Benutzer durch vollständig integrierten Build-Prozess Einsatz in Kunden Projekten Einfache Integration in bestehende Projektstrukturen Anpassung an bestehende Prozesse war möglich Fehlender Support diverser Tools zeigte Schwachtstellen auf......die halfen das Projekt zu verbessern Mit jeder weiteren Extension wird ABC besser und mächtiger Die perfekte Build-Pipeline 43 / 44
ABC - Fazit Einsatz in OpenSource Projekten Schnelles Aufsetzen einer neuen Umgebung Minimaler Aufwand beim Wechsel zwischen Projekten Einfachere Adaption der Benutzer durch vollständig integrierten Build-Prozess Einsatz in Kunden Projekten Einfache Integration in bestehende Projektstrukturen Anpassung an bestehende Prozesse war möglich Fehlender Support diverser Tools zeigte Schwachtstellen auf......die halfen das Projekt zu verbessern Mit jeder weiteren Extension wird ABC besser und mächtiger Die perfekte Build-Pipeline 43 / 44
ABC - Fazit Einsatz in OpenSource Projekten Schnelles Aufsetzen einer neuen Umgebung Minimaler Aufwand beim Wechsel zwischen Projekten Einfachere Adaption der Benutzer durch vollständig integrierten Build-Prozess Einsatz in Kunden Projekten Einfache Integration in bestehende Projektstrukturen Anpassung an bestehende Prozesse war möglich Fehlender Support diverser Tools zeigte Schwachtstellen auf......die halfen das Projekt zu verbessern Mit jeder weiteren Extension wird ABC besser und mächtiger Die perfekte Build-Pipeline 43 / 44
ABC - Fazit Einsatz in OpenSource Projekten Schnelles Aufsetzen einer neuen Umgebung Minimaler Aufwand beim Wechsel zwischen Projekten Einfachere Adaption der Benutzer durch vollständig integrierten Build-Prozess Einsatz in Kunden Projekten Einfache Integration in bestehende Projektstrukturen Anpassung an bestehende Prozesse war möglich Fehlender Support diverser Tools zeigte Schwachtstellen auf......die halfen das Projekt zu verbessern Mit jeder weiteren Extension wird ABC besser und mächtiger Die perfekte Build-Pipeline 43 / 44
ABC - Fazit Einsatz in OpenSource Projekten Schnelles Aufsetzen einer neuen Umgebung Minimaler Aufwand beim Wechsel zwischen Projekten Einfachere Adaption der Benutzer durch vollständig integrierten Build-Prozess Einsatz in Kunden Projekten Einfache Integration in bestehende Projektstrukturen Anpassung an bestehende Prozesse war möglich Fehlender Support diverser Tools zeigte Schwachtstellen auf......die halfen das Projekt zu verbessern Mit jeder weiteren Extension wird ABC besser und mächtiger Die perfekte Build-Pipeline 43 / 44
ABC - Fazit Einsatz in OpenSource Projekten Schnelles Aufsetzen einer neuen Umgebung Minimaler Aufwand beim Wechsel zwischen Projekten Einfachere Adaption der Benutzer durch vollständig integrierten Build-Prozess Einsatz in Kunden Projekten Einfache Integration in bestehende Projektstrukturen Anpassung an bestehende Prozesse war möglich Fehlender Support diverser Tools zeigte Schwachtstellen auf......die halfen das Projekt zu verbessern Mit jeder weiteren Extension wird ABC besser und mächtiger Die perfekte Build-Pipeline 43 / 44
ABC - Fazit Einsatz in OpenSource Projekten Schnelles Aufsetzen einer neuen Umgebung Minimaler Aufwand beim Wechsel zwischen Projekten Einfachere Adaption der Benutzer durch vollständig integrierten Build-Prozess Einsatz in Kunden Projekten Einfache Integration in bestehende Projektstrukturen Anpassung an bestehende Prozesse war möglich Fehlender Support diverser Tools zeigte Schwachtstellen auf......die halfen das Projekt zu verbessern Mit jeder weiteren Extension wird ABC besser und mächtiger Die perfekte Build-Pipeline 43 / 44
ABC - Fazit Einsatz in OpenSource Projekten Schnelles Aufsetzen einer neuen Umgebung Minimaler Aufwand beim Wechsel zwischen Projekten Einfachere Adaption der Benutzer durch vollständig integrierten Build-Prozess Einsatz in Kunden Projekten Einfache Integration in bestehende Projektstrukturen Anpassung an bestehende Prozesse war möglich Fehlender Support diverser Tools zeigte Schwachtstellen auf......die halfen das Projekt zu verbessern Mit jeder weiteren Extension wird ABC besser und mächtiger Die perfekte Build-Pipeline 43 / 44
ABC - Fazit Einsatz in OpenSource Projekten Schnelles Aufsetzen einer neuen Umgebung Minimaler Aufwand beim Wechsel zwischen Projekten Einfachere Adaption der Benutzer durch vollständig integrierten Build-Prozess Einsatz in Kunden Projekten Einfache Integration in bestehende Projektstrukturen Anpassung an bestehende Prozesse war möglich Fehlender Support diverser Tools zeigte Schwachtstellen auf......die halfen das Projekt zu verbessern Mit jeder weiteren Extension wird ABC besser und mächtiger Die perfekte Build-Pipeline 43 / 44
Vielen Dank für die Aufmerksamkeit Fragen, Kommentare oder Anmerkungen? Rate us: https://joind.in/7367 Slides: http://talks.qafoo.com Jakob Westhoff Kontakt: <jakob@qafoo.com> Folgt mir: @jakobwesthoff Manuel Pichler Kontakt: <manuel@qafoo.com> Folgt mir: @manuelp Engagiert uns: http://qafoo.com Die perfekte Build-Pipeline 44 / 44