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 h...
Die Integrations-Hölle
oder anders:

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

Frage...
Die Integrations-Hölle
1. mehrere Entwickler arbeiten unversioniert am Code
2. sprechen sich mündlich ab (oder über Klebeb...
Die Integrations-Hölle
1. mehrere Entwickler operieren am offenen Herzen
2. sprechen sich mündlich ab
3. arbeiten auf unte...
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. k...
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....
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 Prozes...
Jenkins
1. Unit Tests durchführen und Auswerten
2. Code-Reviews durchführen (Semantik, Stil, Probleme..)
3. Einhaltung von...
Jenkins
Und das wars?
Jenkins
11. Integration mit Paas/IaaS/SaaS Systemen wie
Cloudbees, Soucelabs, Amazon AWS
12. Managen von Infrastruktur
13....
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...
Und die Vorteile?
Für Projektleiter / POs

1. Harmonisierung von Prozessen
2. Zuversichtlichkeit bei Projekten
3. Steigeru...
Und die Vorteile?
Für Kunden

1. Frühe Testbarkeit von Produkt-Fragmenten
2. Zuversichtlichkeit beim Projektverlauf
3. Höh...
Ok, will haben, was muss
ich tun?
Vorraussetzungen
1. kompletter Code in VCS (Git, SVN)
2. Entwickler branchen ihr Feature
3. automatischer Integrations- un...
Beste Freunde
1. Agile Software Entwicklung
2. TDD / BDD
3. GIT / GitHub
4. Automatische Spielfreunde wie Vagrant, Puppet,...
Live Demo?

1. Live Demo nächstes Mal
2. ggf. an einem echten Beispiel
Vielen Dank!
Nächste SlideShare
Wird geladen in …5
×

Continuous Integration / Deployment mit Jenkins CI

1.240 Aufrufe

Veröffentlicht am

Slideshow für den Webmontag am Dienstag am 18.11.2013 in Schwerin. Grober Überblick was CI / CD mit Jenkins ist und welche Vorteile es bietet.

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.240
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
5
Aktionen
Geteilt
0
Downloads
11
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Continuous Integration / Deployment mit Jenkins CI

  1. 1. Continuous Integration / Deployment mit Jenkins CI Webmontag am Dienstag Schwerin, 19.11.2013
  2. 2. FLORIAN BOSSELMANN Head of PHP/Frontend Software Development @Silpion Hamburg florian@ultradigital.de skype: flobo79
  3. 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. 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. 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. 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. 7. Und wie kommt man in die Deployment Hölle?
  8. 8. Und wie kommt man in die Deployment Hölle? 1. ganz klar: per FTP Upload ;)
  9. 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. 10. Die Folge Projekt kaputt Keine Kunden mehr Armut Soziale Ausgrenzung ... die Hölle!
  11. 11. Wie entkommt man der Integrations und Deployment Hölle?
  12. 12. Wie entkommt man der Integrations und Deployment Hölle? Mit einer Integrations- und Deployment Strategie!
  13. 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. 14. Integrations- und Deployment Strategie! Das alles bei jeder Änderung? Oder beim finalen Ausliefern?
  15. 15. Integrations- und Deployment Strategie! Ja bei jeder Änderung, die „fertig programmiert ist“
  16. 16. Darf ich vorstellen? Der neue Senior Entwickler Tester Integrator Reporter Team Player
  17. 17. Jenkins Hauptfunktion ist 1. Automtisches kontinuierliches „bauen“ von Software 2. Überwachung von kontinuierlichen Prozessen - wie APIs, Cron-Scripten, Builds
  18. 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
  19. 19. Jenkins Und das wars?
  20. 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. 21. Und die Vorteile? ja .. was könnte das wohl sein :)
  22. 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. 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. 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. 25. Ok, will haben, was muss ich tun?
  26. 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. 27. Beste Freunde 1. Agile Software Entwicklung 2. TDD / BDD 3. GIT / GitHub 4. Automatische Spielfreunde wie Vagrant, Puppet, Capistrano, Chef)
  28. 28. Live Demo? 1. Live Demo nächstes Mal 2. ggf. an einem echten Beispiel
  29. 29. Vielen Dank!

×