SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
Continuous Integration /
Deployment
mit Jenkins CI
Webmontag am Dienstag
Schwerin, 19.11.2013
FLORIAN
BOSSELMANN
Head of PHP/Frontend
Software Development
@Silpion Hamburg
florian@ultradigital.de
skype: flobo79
Disclaimer
1. Manche Darstellungen sind überspitzt
2. Ich bin kein Entwickler, sondern bekomme
so mit was geht :)
3. Ich hafte für nix
Die Integrations-Hölle
oder anders:

Wer hat meine Datei
überschrieben?
(Erinnung: einmal zu Stefan Schmidt winken)

Fragen wer einen Integrations Prozess hat?
Die Integrations-Hölle
1. mehrere Entwickler arbeiten unversioniert am Code
2. sprechen sich mündlich ab (oder über Klebebacker)
3. arbeiten auf unterschiedlichen Plattformen
4. Änderungen werden händisch zusammengeführt
5. Danach wird der unveränderte Teil nicht getestet
6. Man hofft und vermutet, zB. dass mein Code von
gestern noch nicht überschrieben wurde
Die Integrations-Hölle
1. mehrere Entwickler operieren am offenen Herzen
2. sprechen sich mündlich ab
3. arbeiten auf unterschiedlichen Plattformen
4. Änderungen werden händisch zusammengeführt
5. Danach wird der unveränderte Teil nicht getestet
6. Man hofft und vermutet, zB dass mein Code von
gestern noch da ist
Fatal error: Class 'User' not found in /Users/flobo/Webserver/
queske/app/mvc/controller/BaseController.php on line 23
Und wie kommt man in die
Deployment Hölle?
Und wie kommt man in die
Deployment Hölle?
1. ganz klar: per FTP Upload ;)
Und wie kommt man in die
Deployment Hölle?
1. ganz klar: per FTP Upload ;)
2. Files Manuell auf Zielsystem übertragen
3. keine/abweichende lokale Entwicklungsumgebung
4. keine Tests durchgeführt
5. FTP Client hat Eigenwillen
6. Jemand hat bereits die selbe Datei verändert
7. Upload von 3271 Dateien bricht ab ... irgendwo
8. Upload bricht ab, Datei leer
9. statt index_test.php wird delete_db.php in
index.php umbenannt
Die Folge
Projekt kaputt
Keine Kunden mehr
Armut
Soziale Ausgrenzung
...
die Hölle!
Wie entkommt man der
Integrations und Deployment
Hölle?
Wie entkommt man der
Integrations und Deployment
Hölle?

Mit einer Integrations- und
Deployment Strategie!
Integrations- und
Deployment Strategie!
1. Unit Tests schreiben / durchführen
2. Versionskontrolle und Branching nutzen
3. Code-Review/Pair Programming (Semantik, Bugs etc)
4. Coding-Richtlinien und Definitions of Done einhalten
5. Datenbank Schema testen und updaten
6. APIs und Infrastruktur testen
7. Kompletter „Build“ der Software
8. Symlinks kontrollieren
9. Selenium / Frontent-Tests durchführen
X. Rollback des Deploys bei Problemen
Integrations- und
Deployment Strategie!
Das alles bei jeder Änderung?
Oder beim finalen Ausliefern?
Integrations- und
Deployment Strategie!

Ja bei jeder Änderung, die „fertig programmiert ist“
Darf ich vorstellen?
Der neue Senior Entwickler
Tester
Integrator
Reporter
Team Player
Jenkins
Hauptfunktion ist
1. Automtisches kontinuierliches „bauen“ von Software
2. Überwachung von kontinuierlichen Prozessen
- wie APIs, Cron-Scripten, Builds
Jenkins
1. Unit Tests durchführen und Auswerten
2. Code-Reviews durchführen (Semantik, Stil, Probleme..)
3. Einhaltung von Coding-Richtlinien prüfen
4. Datenbanken prüfen / updaten / zurücksetzen
5. System und Netzwerk Checks
6. Bauen der Software
7. Managen von Symlinks (Revolving Deploys)
8. Frontend / Regression-Tests durchführen
9. Projektgesundheit überwachen
10. Chuck Norris Witze machen
Jenkins
Und das wars?
Jenkins
11. Integration mit Paas/IaaS/SaaS Systemen wie
Cloudbees, Soucelabs, Amazon AWS
12. Managen von Infrastruktur
13. Überwachen von Systemprozessen
14. Integration über Jenkins Remote API

u name it!
Derzeit ca 850 Plugins verfügbar - 2011 waren es 400
Und die Vorteile?
ja .. was könnte das wohl sein :)
Und die Vorteile?
Für Entwickler
1. Syntaktische Prüfung des Codes (Checkstyle, JSLint,
PHP -l, etc)
2. Fehler-Reports bei Problemen
3. Unterstützung bei Einhaltung von Konventionen
4. Überblick über die Projekte per Build Monitor
5. Reduzierung der typischen Fehler
6. keine nervigen manuellen Roboter-Aktivitäten
8. Kann sich auf das Coden konzentrieren
9. Braucht kein schlechtes Gewissen zu haben
Und die Vorteile?
Für Projektleiter / POs

1. Harmonisierung von Prozessen
2. Zuversichtlichkeit bei Projekten
3. Steigerung der Produktivität und Qualität
4. Metriken zum Verfolgen des Projektverlaufes
5. Unterstützung im Agilen Entwicklungsprozess
6. Bessere Transparenz / Auskunftsfähigkeit
Und die Vorteile?
Für Kunden

1. Frühe Testbarkeit von Produkt-Fragmenten
2. Zuversichtlichkeit beim Projektverlauf
3. Höhere Qualität des Endproduktes
4. Weniger Post-Launch-Schmerzen
5. Besseres Produkt durch früheren Proof-Of-Concept
6. Bessere Zahlungsmoral
Ok, will haben, was muss
ich tun?
Vorraussetzungen
1. kompletter Code in VCS (Git, SVN)
2. Entwickler branchen ihr Feature
3. automatischer Integrations- und Deployment-Prozess
4. Build und Testprozess muss schnell sein
5. Tests müssen existieren (Unit, Behaviour, Frontend)
6. Infrastruktur muss voll remote-administrierbar sein
7. Offline-Repos für eigene Forks oder bei Firewalls (Satis)
Beste Freunde
1. Agile Software Entwicklung
2. TDD / BDD
3. GIT / GitHub
4. Automatische Spielfreunde wie Vagrant, Puppet,
Capistrano, Chef)
Live Demo?

1. Live Demo nächstes Mal
2. ggf. an einem echten Beispiel
Vielen Dank!

Weitere ähnliche Inhalte

Was ist angesagt?

GPM Vortrag: Modernes Management von Softwareprojekten
GPM Vortrag: Modernes Management von SoftwareprojektenGPM Vortrag: Modernes Management von Softwareprojekten
GPM Vortrag: Modernes Management von SoftwareprojektenFrank Düsterbeck
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftBart Zwager
 
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnTipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnViktor Vogel
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3Peter Kraume
 
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...Alex Sili
 
GTD 2013 Stephan Wiesner - Wenn Tester Apps entwickeln
GTD 2013 Stephan Wiesner - Wenn Tester Apps entwickelnGTD 2013 Stephan Wiesner - Wenn Tester Apps entwickeln
GTD 2013 Stephan Wiesner - Wenn Tester Apps entwickelnSwissQ Consulting AG
 
PHP Deployment mit Ansible
PHP Deployment mit AnsiblePHP Deployment mit Ansible
PHP Deployment mit AnsibleMichael Döhler
 
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.Stephan Schmidt
 

Was ist angesagt? (9)

GPM Vortrag: Modernes Management von Softwareprojekten
GPM Vortrag: Modernes Management von SoftwareprojektenGPM Vortrag: Modernes Management von Softwareprojekten
GPM Vortrag: Modernes Management von Softwareprojekten
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei Technosoft
 
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnTipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3
 
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
 
GTD 2013 Stephan Wiesner - Wenn Tester Apps entwickeln
GTD 2013 Stephan Wiesner - Wenn Tester Apps entwickelnGTD 2013 Stephan Wiesner - Wenn Tester Apps entwickeln
GTD 2013 Stephan Wiesner - Wenn Tester Apps entwickeln
 
PHP Deployment mit Ansible
PHP Deployment mit AnsiblePHP Deployment mit Ansible
PHP Deployment mit Ansible
 
Codeception VisualCeption
Codeception VisualCeptionCodeception VisualCeption
Codeception VisualCeption
 
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
 

Andere mochten auch

Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Wiest Simon
 
Statische Code-Analyse mit Python
Statische Code-Analyse mit PythonStatische Code-Analyse mit Python
Statische Code-Analyse mit PythonTimo Stollenwerk
 
Cloud Computing - Wie grün ist die Wolke?
Cloud Computing - Wie grün ist die Wolke?Cloud Computing - Wie grün ist die Wolke?
Cloud Computing - Wie grün ist die Wolke?Michael Pauly
 
Continuous Delivery @ FriendScout24 | Webinale 2012
Continuous Delivery @ FriendScout24 | Webinale 2012Continuous Delivery @ FriendScout24 | Webinale 2012
Continuous Delivery @ FriendScout24 | Webinale 2012Michael Maretzke
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...LeanIX GmbH
 
Continuous integration eine Einführung für Unkundige
Continuous integration   eine Einführung für UnkundigeContinuous integration   eine Einführung für Unkundige
Continuous integration eine Einführung für Unkundigeabuwipp
 
DevDay 2016: Peter Lehmann - Testautomatisierungsframework Xeta
DevDay 2016: Peter Lehmann - Testautomatisierungsframework XetaDevDay 2016: Peter Lehmann - Testautomatisierungsframework Xeta
DevDay 2016: Peter Lehmann - Testautomatisierungsframework XetaDevDay Dresden
 
Webinar 4 Server in der Cloud – die AWS Compute Dienste
Webinar 4 Server in der Cloud – die AWS Compute DiensteWebinar 4 Server in der Cloud – die AWS Compute Dienste
Webinar 4 Server in der Cloud – die AWS Compute DiensteAWS Germany
 
Einführung in AWS - Übersicht über die wichtigsten Services
Einführung in AWS - Übersicht über die wichtigsten Services Einführung in AWS - Übersicht über die wichtigsten Services
Einführung in AWS - Übersicht über die wichtigsten Services AWS Germany
 
Webinar SharePoint auf AWS
Webinar SharePoint auf AWSWebinar SharePoint auf AWS
Webinar SharePoint auf AWSAWS Germany
 
Unit testing - Überblick für (Projekt) Manager
Unit testing - Überblick für (Projekt) ManagerUnit testing - Überblick für (Projekt) Manager
Unit testing - Überblick für (Projekt) ManagerFrank Sons
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Jürgen Gutsch
 
Amplificador bjt emisor comun (voltaje negativo)
Amplificador bjt emisor comun (voltaje negativo)Amplificador bjt emisor comun (voltaje negativo)
Amplificador bjt emisor comun (voltaje negativo)Miguel Angel Peña
 
Incremente su presencia gracias y a través de internet
Incremente su presencia gracias y a través de internetIncremente su presencia gracias y a través de internet
Incremente su presencia gracias y a través de internetAndrés Julián Gómez Montes
 
Redes Ethernet UCV 2009
Redes Ethernet UCV 2009Redes Ethernet UCV 2009
Redes Ethernet UCV 2009celalima
 
Vertriebsschulung energy manager starterkit september_0v1
Vertriebsschulung energy manager starterkit september_0v1Vertriebsschulung energy manager starterkit september_0v1
Vertriebsschulung energy manager starterkit september_0v1Brigitte Petzoldt
 

Andere mochten auch (20)

Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
 
Statische Code-Analyse mit Python
Statische Code-Analyse mit PythonStatische Code-Analyse mit Python
Statische Code-Analyse mit Python
 
Cloud Computing - Wie grün ist die Wolke?
Cloud Computing - Wie grün ist die Wolke?Cloud Computing - Wie grün ist die Wolke?
Cloud Computing - Wie grün ist die Wolke?
 
Continuous Delivery @ FriendScout24 | Webinale 2012
Continuous Delivery @ FriendScout24 | Webinale 2012Continuous Delivery @ FriendScout24 | Webinale 2012
Continuous Delivery @ FriendScout24 | Webinale 2012
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
 
Continuous integration eine Einführung für Unkundige
Continuous integration   eine Einführung für UnkundigeContinuous integration   eine Einführung für Unkundige
Continuous integration eine Einführung für Unkundige
 
DevDay 2016: Peter Lehmann - Testautomatisierungsframework Xeta
DevDay 2016: Peter Lehmann - Testautomatisierungsframework XetaDevDay 2016: Peter Lehmann - Testautomatisierungsframework Xeta
DevDay 2016: Peter Lehmann - Testautomatisierungsframework Xeta
 
Webinar 4 Server in der Cloud – die AWS Compute Dienste
Webinar 4 Server in der Cloud – die AWS Compute DiensteWebinar 4 Server in der Cloud – die AWS Compute Dienste
Webinar 4 Server in der Cloud – die AWS Compute Dienste
 
Einführung in AWS - Übersicht über die wichtigsten Services
Einführung in AWS - Übersicht über die wichtigsten Services Einführung in AWS - Übersicht über die wichtigsten Services
Einführung in AWS - Übersicht über die wichtigsten Services
 
Webinar SharePoint auf AWS
Webinar SharePoint auf AWSWebinar SharePoint auf AWS
Webinar SharePoint auf AWS
 
Unit testing - Überblick für (Projekt) Manager
Unit testing - Überblick für (Projekt) ManagerUnit testing - Überblick für (Projekt) Manager
Unit testing - Überblick für (Projekt) Manager
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
 
1D
1D1D
1D
 
Amplificador bjt emisor comun (voltaje negativo)
Amplificador bjt emisor comun (voltaje negativo)Amplificador bjt emisor comun (voltaje negativo)
Amplificador bjt emisor comun (voltaje negativo)
 
Incremente su presencia gracias y a través de internet
Incremente su presencia gracias y a través de internetIncremente su presencia gracias y a través de internet
Incremente su presencia gracias y a través de internet
 
Docentes siglo x xi (1)
Docentes siglo x xi (1)Docentes siglo x xi (1)
Docentes siglo x xi (1)
 
Redes Ethernet UCV 2009
Redes Ethernet UCV 2009Redes Ethernet UCV 2009
Redes Ethernet UCV 2009
 
PARSHIP Test
PARSHIP TestPARSHIP Test
PARSHIP Test
 
Capitulo 3
Capitulo 3Capitulo 3
Capitulo 3
 
Vertriebsschulung energy manager starterkit september_0v1
Vertriebsschulung energy manager starterkit september_0v1Vertriebsschulung energy manager starterkit september_0v1
Vertriebsschulung energy manager starterkit september_0v1
 

Ähnlich wie Continuous Integration / Deployment mit Jenkins CI

Software Entwicklung im Team
Software Entwicklung im TeamSoftware Entwicklung im Team
Software Entwicklung im Teambrandts
 
Software-Tests in PHP-Anwendungen
Software-Tests in PHP-AnwendungenSoftware-Tests in PHP-Anwendungen
Software-Tests in PHP-AnwendungenGjero Krsteski
 
Config as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeConfig as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeDevOps Meetup Bern
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsGünther Haslbeck
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013superflomo
 
PHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze EinführungPHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze Einführungfrankstaude
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsThorsten Kamann
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerDennis Wilson
 
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010Christian Baranowski
 
Kaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapStephan Kaps
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersUlrich Krause
 
10 Dinge die ich an dir hasse - Stolpersteine in der Webentwicklung
10 Dinge die ich an dir hasse - Stolpersteine in der Webentwicklung10 Dinge die ich an dir hasse - Stolpersteine in der Webentwicklung
10 Dinge die ich an dir hasse - Stolpersteine in der WebentwicklungSebastian Springer
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightChristinaLerch1
 
Legacy php - Sanieren oder Ablösen?
Legacy php  - Sanieren oder Ablösen?Legacy php  - Sanieren oder Ablösen?
Legacy php - Sanieren oder Ablösen?Johann-Peter Hartmann
 
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...Timo Stollenwerk
 

Ähnlich wie Continuous Integration / Deployment mit Jenkins CI (20)

Advanced Continuous Integration
Advanced Continuous IntegrationAdvanced Continuous Integration
Advanced Continuous Integration
 
Software Entwicklung im Team
Software Entwicklung im TeamSoftware Entwicklung im Team
Software Entwicklung im Team
 
Software-Tests in PHP-Anwendungen
Software-Tests in PHP-AnwendungenSoftware-Tests in PHP-Anwendungen
Software-Tests in PHP-Anwendungen
 
Config as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeConfig as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as Code
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web Applications
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013
 
PHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze EinführungPHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze Einführung
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
 
Agiles Testen - Überblick
Agiles Testen - ÜberblickAgiles Testen - Überblick
Agiles Testen - Überblick
 
Kaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment Roadmap
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
10 Dinge die ich an dir hasse - Stolpersteine in der Webentwicklung
10 Dinge die ich an dir hasse - Stolpersteine in der Webentwicklung10 Dinge die ich an dir hasse - Stolpersteine in der Webentwicklung
10 Dinge die ich an dir hasse - Stolpersteine in der Webentwicklung
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha Night
 
Bit wisem 2015-wieners-sitzung-09_Software-Entwicklung
Bit wisem 2015-wieners-sitzung-09_Software-EntwicklungBit wisem 2015-wieners-sitzung-09_Software-Entwicklung
Bit wisem 2015-wieners-sitzung-09_Software-Entwicklung
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
DevOps jenseits der Tools
DevOps jenseits der ToolsDevOps jenseits der Tools
DevOps jenseits der Tools
 
Legacy php - Sanieren oder Ablösen?
Legacy php  - Sanieren oder Ablösen?Legacy php  - Sanieren oder Ablösen?
Legacy php - Sanieren oder Ablösen?
 
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
 

Continuous Integration / Deployment mit Jenkins CI

  • 1. Continuous Integration / Deployment mit Jenkins CI Webmontag am Dienstag Schwerin, 19.11.2013
  • 2. FLORIAN BOSSELMANN Head of PHP/Frontend Software Development @Silpion Hamburg florian@ultradigital.de skype: flobo79
  • 3. Disclaimer 1. Manche Darstellungen sind überspitzt 2. Ich bin kein Entwickler, sondern bekomme so mit was geht :) 3. Ich hafte für nix
  • 4. Die Integrations-Hölle oder anders: Wer hat meine Datei überschrieben? (Erinnung: einmal zu Stefan Schmidt winken) Fragen wer einen Integrations Prozess hat?
  • 5. Die Integrations-Hölle 1. mehrere Entwickler arbeiten unversioniert am Code 2. sprechen sich mündlich ab (oder über Klebebacker) 3. arbeiten auf unterschiedlichen Plattformen 4. Änderungen werden händisch zusammengeführt 5. Danach wird der unveränderte Teil nicht getestet 6. Man hofft und vermutet, zB. dass mein Code von gestern noch nicht überschrieben wurde
  • 6. Die Integrations-Hölle 1. mehrere Entwickler operieren am offenen Herzen 2. sprechen sich mündlich ab 3. arbeiten auf unterschiedlichen Plattformen 4. Änderungen werden händisch zusammengeführt 5. Danach wird der unveränderte Teil nicht getestet 6. Man hofft und vermutet, zB dass mein Code von gestern noch da ist Fatal error: Class 'User' not found in /Users/flobo/Webserver/ queske/app/mvc/controller/BaseController.php on line 23
  • 7. Und wie kommt man in die Deployment Hölle?
  • 8. Und wie kommt man in die Deployment Hölle? 1. ganz klar: per FTP Upload ;)
  • 9. Und wie kommt man in die Deployment Hölle? 1. ganz klar: per FTP Upload ;) 2. Files Manuell auf Zielsystem übertragen 3. keine/abweichende lokale Entwicklungsumgebung 4. keine Tests durchgeführt 5. FTP Client hat Eigenwillen 6. Jemand hat bereits die selbe Datei verändert 7. Upload von 3271 Dateien bricht ab ... irgendwo 8. Upload bricht ab, Datei leer 9. statt index_test.php wird delete_db.php in index.php umbenannt
  • 10. Die Folge Projekt kaputt Keine Kunden mehr Armut Soziale Ausgrenzung ... die Hölle!
  • 11. Wie entkommt man der Integrations und Deployment Hölle?
  • 12. Wie entkommt man der Integrations und Deployment Hölle? Mit einer Integrations- und Deployment Strategie!
  • 13. Integrations- und Deployment Strategie! 1. Unit Tests schreiben / durchführen 2. Versionskontrolle und Branching nutzen 3. Code-Review/Pair Programming (Semantik, Bugs etc) 4. Coding-Richtlinien und Definitions of Done einhalten 5. Datenbank Schema testen und updaten 6. APIs und Infrastruktur testen 7. Kompletter „Build“ der Software 8. Symlinks kontrollieren 9. Selenium / Frontent-Tests durchführen X. Rollback des Deploys bei Problemen
  • 14. Integrations- und Deployment Strategie! Das alles bei jeder Änderung? Oder beim finalen Ausliefern?
  • 15. Integrations- und Deployment Strategie! Ja bei jeder Änderung, die „fertig programmiert ist“
  • 16. Darf ich vorstellen? Der neue Senior Entwickler Tester Integrator Reporter Team Player
  • 17. Jenkins Hauptfunktion ist 1. Automtisches kontinuierliches „bauen“ von Software 2. Überwachung von kontinuierlichen Prozessen - wie APIs, Cron-Scripten, Builds
  • 18. Jenkins 1. Unit Tests durchführen und Auswerten 2. Code-Reviews durchführen (Semantik, Stil, Probleme..) 3. Einhaltung von Coding-Richtlinien prüfen 4. Datenbanken prüfen / updaten / zurücksetzen 5. System und Netzwerk Checks 6. Bauen der Software 7. Managen von Symlinks (Revolving Deploys) 8. Frontend / Regression-Tests durchführen 9. Projektgesundheit überwachen 10. Chuck Norris Witze machen
  • 20. Jenkins 11. Integration mit Paas/IaaS/SaaS Systemen wie Cloudbees, Soucelabs, Amazon AWS 12. Managen von Infrastruktur 13. Überwachen von Systemprozessen 14. Integration über Jenkins Remote API u name it! Derzeit ca 850 Plugins verfügbar - 2011 waren es 400
  • 21. Und die Vorteile? ja .. was könnte das wohl sein :)
  • 22. Und die Vorteile? Für Entwickler 1. Syntaktische Prüfung des Codes (Checkstyle, JSLint, PHP -l, etc) 2. Fehler-Reports bei Problemen 3. Unterstützung bei Einhaltung von Konventionen 4. Überblick über die Projekte per Build Monitor 5. Reduzierung der typischen Fehler 6. keine nervigen manuellen Roboter-Aktivitäten 8. Kann sich auf das Coden konzentrieren 9. Braucht kein schlechtes Gewissen zu haben
  • 23. Und die Vorteile? Für Projektleiter / POs 1. Harmonisierung von Prozessen 2. Zuversichtlichkeit bei Projekten 3. Steigerung der Produktivität und Qualität 4. Metriken zum Verfolgen des Projektverlaufes 5. Unterstützung im Agilen Entwicklungsprozess 6. Bessere Transparenz / Auskunftsfähigkeit
  • 24. Und die Vorteile? Für Kunden 1. Frühe Testbarkeit von Produkt-Fragmenten 2. Zuversichtlichkeit beim Projektverlauf 3. Höhere Qualität des Endproduktes 4. Weniger Post-Launch-Schmerzen 5. Besseres Produkt durch früheren Proof-Of-Concept 6. Bessere Zahlungsmoral
  • 25. Ok, will haben, was muss ich tun?
  • 26. Vorraussetzungen 1. kompletter Code in VCS (Git, SVN) 2. Entwickler branchen ihr Feature 3. automatischer Integrations- und Deployment-Prozess 4. Build und Testprozess muss schnell sein 5. Tests müssen existieren (Unit, Behaviour, Frontend) 6. Infrastruktur muss voll remote-administrierbar sein 7. Offline-Repos für eigene Forks oder bei Firewalls (Satis)
  • 27. Beste Freunde 1. Agile Software Entwicklung 2. TDD / BDD 3. GIT / GitHub 4. Automatische Spielfreunde wie Vagrant, Puppet, Capistrano, Chef)
  • 28. Live Demo? 1. Live Demo nächstes Mal 2. ggf. an einem echten Beispiel