continuous integration / deployment mit jenkins ci
DESCRIPTION
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.TRANSCRIPT
![Page 1: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/1.jpg)
Continuous Integration / Deployment
mit Jenkins CI
Webmontag am DienstagSchwerin, 19.11.2013
![Page 2: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/2.jpg)
FLORIANBOSSELMANN
Head of PHP/Frontend Software Development
@Silpion Hamburg
[email protected]: flobo79
![Page 3: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/3.jpg)
Disclaimer
1. Manche Darstellungen sind überspitzt
2. Ich bin kein Entwickler, sondern bekomme so mit was geht :)
3. Ich hafte für nix
![Page 4: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/4.jpg)
Die Integrations-Hölle
oder anders:
Wer hat meine Datei überschrieben?
(Erinnung: einmal zu Stefan Schmidt winken)
Fragen wer einen Integrations Prozess hat?
![Page 5: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/5.jpg)
Die Integrations-Hölle
1. mehrere Entwickler arbeiten unversioniert am Code 2. sprechen sich mündlich ab (oder über Klebebacker)3. arbeiten auf unterschiedlichen Plattformen4. Änderungen werden händisch zusammengeführt5. Danach wird der unveränderte Teil nicht getestet6. Man hofft und vermutet, zB. dass mein Code von gestern noch nicht überschrieben wurde
![Page 6: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/6.jpg)
Die Integrations-Hölle
1. mehrere Entwickler operieren am offenen Herzen2. sprechen sich mündlich ab3. arbeiten auf unterschiedlichen Plattformen4. Änderungen werden händisch zusammengeführt5. Danach wird der unveränderte Teil nicht getestet6. 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
![Page 7: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/7.jpg)
Und wie kommt man in die Deployment Hölle?
![Page 8: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/8.jpg)
Und wie kommt man in die Deployment Hölle?
1. ganz klar: per FTP Upload ;)
![Page 9: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/9.jpg)
Und wie kommt man in die Deployment Hölle?
1. ganz klar: per FTP Upload ;)2. Files Manuell auf Zielsystem übertragen3. keine/abweichende lokale Entwicklungsumgebung4. keine Tests durchgeführt5. FTP Client hat Eigenwillen6. Jemand hat bereits die selbe Datei verändert7. Upload von 3271 Dateien bricht ab ... irgendwo8. Upload bricht ab, Datei leer9. statt index_test.php wird delete_db.php in index.php umbenannt
![Page 10: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/10.jpg)
Die FolgeProjekt kaputtKeine Kunden mehrArmut Soziale Ausgrenzung ... die Hölle!
![Page 11: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/11.jpg)
Wie entkommt man der Integrations und Deployment
Hölle?
![Page 12: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/12.jpg)
Wie entkommt man der Integrations und Deployment
Hölle?
Mit einer Integrations- und Deployment Strategie!
![Page 13: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/13.jpg)
Integrations- und Deployment Strategie!
1. Unit Tests schreiben / durchführen2. Versionskontrolle und Branching nutzen3. Code-Review/Pair Programming (Semantik, Bugs etc)4. Coding-Richtlinien und Definitions of Done einhalten5. Datenbank Schema testen und updaten6. APIs und Infrastruktur testen7. Kompletter „Build“ der Software 8. Symlinks kontrollieren9. Selenium / Frontent-Tests durchführenX. Rollback des Deploys bei Problemen
![Page 14: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/14.jpg)
Integrations- und Deployment Strategie!
Das alles bei jeder Änderung?
Oder beim finalen Ausliefern?
![Page 15: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/15.jpg)
Integrations- und Deployment Strategie!
Ja bei jeder Änderung, die „fertig programmiert ist“
![Page 16: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/16.jpg)
Darf ich vorstellen?
Der neue Senior Entwickler
Tester
Integrator
Reporter
Team Player
![Page 17: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/17.jpg)
Jenkins
Hauptfunktion ist
1. Automtisches kontinuierliches „bauen“ von Software
2. Überwachung von kontinuierlichen Prozessen - wie APIs, Cron-Scripten, Builds
![Page 18: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/18.jpg)
Jenkins1. Unit Tests durchführen und Auswerten2. Code-Reviews durchführen (Semantik, Stil, Probleme..)3. Einhaltung von Coding-Richtlinien prüfen4. Datenbanken prüfen / updaten / zurücksetzen5. System und Netzwerk Checks 6. Bauen der Software7. Managen von Symlinks (Revolving Deploys)8. Frontend / Regression-Tests durchführen9. Projektgesundheit überwachen10. Chuck Norris Witze machen
![Page 19: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/19.jpg)
Jenkins
Und das wars?
![Page 20: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/20.jpg)
Jenkins11. Integration mit Paas/IaaS/SaaS Systemen wie Cloudbees, Soucelabs, Amazon AWS12. Managen von Infrastruktur13. Überwachen von Systemprozessen14. Integration über Jenkins Remote API
u name it!
Derzeit ca 850 Plugins verfügbar - 2011 waren es 400
![Page 21: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/21.jpg)
Und die Vorteile?ja .. was könnte das wohl sein :)
![Page 22: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/22.jpg)
Und die Vorteile?Für Entwickler
1. Syntaktische Prüfung des Codes (Checkstyle, JSLint, PHP -l, etc)2. Fehler-Reports bei Problemen3. Unterstützung bei Einhaltung von Konventionen4. Überblick über die Projekte per Build Monitor5. Reduzierung der typischen Fehler6. keine nervigen manuellen Roboter-Aktivitäten 8. Kann sich auf das Coden konzentrieren9. Braucht kein schlechtes Gewissen zu haben
![Page 23: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/23.jpg)
Und die Vorteile?Für Projektleiter / POs
1. Harmonisierung von Prozessen2. Zuversichtlichkeit bei Projekten3. Steigerung der Produktivität und Qualität4. Metriken zum Verfolgen des Projektverlaufes5. Unterstützung im Agilen Entwicklungsprozess6. Bessere Transparenz / Auskunftsfähigkeit
![Page 24: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/24.jpg)
Und die Vorteile?Für Kunden
1. Frühe Testbarkeit von Produkt-Fragmenten2. Zuversichtlichkeit beim Projektverlauf3. Höhere Qualität des Endproduktes4. Weniger Post-Launch-Schmerzen5. Besseres Produkt durch früheren Proof-Of-Concept6. Bessere Zahlungsmoral
![Page 25: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/25.jpg)
Ok, will haben, was muss ich tun?
![Page 26: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/26.jpg)
Vorraussetzungen
1. kompletter Code in VCS (Git, SVN)2. Entwickler branchen ihr Feature3. automatischer Integrations- und Deployment-Prozess 4. Build und Testprozess muss schnell sein5. Tests müssen existieren (Unit, Behaviour, Frontend)6. Infrastruktur muss voll remote-administrierbar sein7. Offline-Repos für eigene Forks oder bei Firewalls (Satis)
![Page 27: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/27.jpg)
Beste Freunde
1. Agile Software Entwicklung2. TDD / BDD3. GIT / GitHub4. Automatische Spielfreunde wie Vagrant, Puppet, Capistrano, Chef)
![Page 28: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/28.jpg)
Live Demo?
1. Live Demo nächstes Mal2. ggf. an einem echten Beispiel
![Page 29: Continuous Integration / Deployment mit Jenkins CI](https://reader034.vdocuments.net/reader034/viewer/2022050919/5463d7dcb4af9f493f8b46c9/html5/thumbnails/29.jpg)
Vielen Dank!