Die perfekte Build-Pipeline



Ähnliche Dokumente
Vom lokalen Build zum Deployment

Ablösung von Control-M durch JobScheduler

Maven 2 Softwareprojekte mit Kultur

Einführung in Maven und GWT

Softwareprojekte mit Kultur

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

ANT. Kurzvortrag von Manuel Schulze.

Internet Explorer Version 6

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Continuous Delivery in der Realität eines Großunternehmens

Lokale Installation von DotNetNuke 4 ohne IIS

Database Change Management für Continuous Delivery. Diana Lander und Andreas Falk NovaTec Consulting GmbH

Hardware- und Softwareanforderungen für die Installation von California.pro

Effizenzsteigerung bei Villeroy & Boch durch den Einsatz von Magento und Zend

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Planung für Organisation und Technik

Eclipse und Java Einheit 06: Building Eclipse Projete mit Ant

End-to-End Agility Sind Sie schon agil genug? Mag. Christoph Leithner

TYPO3 Installation und Konfiguration

SERVICE SUCHE ZUR UNTERSTÜTZUNG

Consultant & Geschäftsführer, enpit consulting OHG ugb@enpit.de

Titel. SCSM ITIL - CMDB - neue CI Klasse erstellen und benutzen. Eine beispielhafte Installationsanleitung zur Verwendung im Testlab

Installation des CMS-Systems Contao auf einem Windows-Rechner mit XAMPP

Installation von NetBeans inkl. Glassfish Anwendungs-Server

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Reporting Services und SharePoint 2010 Teil 1

Einfach wie noch nie. Der mypackage-ansatz. Ihre Lösung zur automatisierten Client-Bereitstellung. mypackage im Überblick

Installation Wawi SQL in Verbindung mit Microsoft SQL Server 2008 R2 Express with management Tools

Git in großen Projekten

Abacus Formula Compiler (AFC)

Titel. App-V 5 Single Server Anleitung zur Installation

Hardware- und Softwareanforderungen für die Installation von California.pro

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Installation SelectLine SQL in Verbindung mit Microsoft SQL Server 2014 Express with management tools

SFKV MAP Offline-Erfassungstool. Installationsanleitung

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

This manual cannot be redistributed without permission from joomla-monster.com or vorlagenstudio.de

Installation SelectLine SQL in Verbindung mit Microsoft SQL Server 2012 Express with management tools

Titel. System Center Configuration Manager 2012 R2 Anleitung Installation Softwareupdatepunkt und WSUS Integration

MetaQuotes Empfehlungen zum Gebrauch von

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

Von Continuous Integration zu Continuous Deployment

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

PCC Outlook Integration Installationsleitfaden

Installation EPLAN Electric P8 Version Bit Stand: 07/2014

Zwei Wege zur automatisierten SW Verteilung Am Beispiel der Lösungen von Jungheinrich. Matthias Nischwitz,

Installation der SAS Foundation Software auf Windows

EIDAMO Webshop-Lösung - White Paper

Installation Microsoft SQL Server 2008 Express

BitDefender Client Security Kurzanleitung

Konzept Projekt Lisa

Die Entwicklung des Open-Source. Source-Tools. zum Datenbankabgleich von Karsten Panier. Inhalt

Buildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012

Standardisiert aber flexibel

SOLID EDGE INSTALLATION STANDARD PARTS am Client. INSTALLATION Standard Parts am Client

EPO Consulting GmbH. Ihr Partner für HTML5 und SAP UI5 Apps. Stand 2015/04. EPO Consulting GmbH - 1 -

FAQ The FAQ/knowledge base. Version 2.1.1

Agile Software Verteilung

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

Deployment Deployment Seite 1 / 25

Deploy von PHP-Applikationen

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

BUILDNOTES TOPAL FINANZBUCHHALTUNG

Nico Lüdemann. Applikationsvirtualisierung mit Microsoft SoftGrid Galileo Press

SMARTtill Server mit Manager

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

Installationsanleitung dateiagent Pro

SharePoint Demonstration

Installationsanleitung WibuKey Treiber

MailUtilities: Remote Deployment - Einführung

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

visionapp Base Installation Packages (vbip) Update

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

1.3 Erster Start des Aufmaß-Moduls und Anlegen der Datenbank

Installationsanleitung für. SugarCRM Open Source. Windows Einzelplatz

Smap3D PDM 10. Installation. Stand-Alone-Migration-Analyzer

Step by Step Webserver unter Windows Server von Christian Bartl

Apache - Maven. Java-Erstellung auf Plugin-Basis. Martin Hoffmann

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

SQL Server 2008 Standard und Workgroup Edition

OP-LOG

Release Automation für Siebel

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Artikel Test-Organisation in grösseren Magento(1)-Projekten

1. Laden Sie sich zunächst das aktuelle Installationspaket auf herunter:

Treiber- und Software-Update für ITRA-Geräte

doubleslash Net-Business GmbH

Version 0.3. Installation von MinGW und Eclipse CDT

Transkript:

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