CONTINUOUS INTEGRATION      MIT JENKINS           Web DevCon 2011     InterContinental Hotel, Hamburg            17. Oktob...
DANTEALIGHIERI   * 1265   ✝ 1321
Dante Alighieri  DieGöttlicheKomödie
DIE ZEHN HÖLLENKREISEVorhölle                                                     Die                                     ...
DAS WAR 1320 A.D.
WIR HABEN 2011.
DER ELFTE HÖLLENKREISVorhölle                                                          Die                                ...
SPÄTINTEGRIERER KOMMEN IN DIEINTEGRATIONSHÖLLE
SIE WOLLEN NICHT MEHR IN DIE INTEGRATIONSHÖLLE?                    Jenkins
STEPHAN  SCHMIDT  Head of Web SalesDevelopment bei der 1&1      Internet AG     PHP seit 1999    Autor & Redner
HAB‘S NOCH AUF KEINEEURO-MÜNZE GESCHAFFT :(
WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE?
WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE?      Tage bis zur Deadline :   20
WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE?         Tage bis zur Deadline :   20   dev                                  dev
WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE?         Tage bis zur Deadline :   10   dev                                  dev
WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE?         Tage bis zur Deadline :   5   dev                                 dev
WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE?         Tage bis zur Deadline :   0   dev                                 dev
WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE?         Tage bis zur Deadline :   0   dev                                 dev
WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE?         Tage bis zur Deadline :   0   dev                                 dev      ...
WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE?         Tage bis zur Deadline :   0                      deploy           dev   dev...
WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE?         Tage bis zur Deadline :   0                      deploy           dev   dev...
WIE KOMMT MAN IN DIE        INTEGRATIONSHÖLLE?• Esfinden parallele Entwicklungen auf einzelnen Rechnern der Mitarbeiter sta...
WIE SIEHT ES IN DER   INTEGRATIONSHÖLLE AUS?• Es   ist dunkel, meistens wird bis spät in die Nacht integriert.• Die   Entw...
WIE ENTKOMMEN SIE DER     INTEGRATIONSHÖLLE?• Erhöhen   Sie die Frequenz der Integrationen in Ihrem Projekt.• Führen Sie f...
Jenkins ist ihrpersönlicher CIButler.
AUSWEG AUS DERINTEGRATIONSHÖLLE
AUSWEG AUS DERINTEGRATIONSHÖLLE   mitcom
AUSWEG AUS DERINTEGRATIONSHÖLLE               it   mit            mmcom         co
AUSWEG AUS DERINTEGRATIONSHÖLLE               it   mit            mmcom         co
AUSWEG AUS DERINTEGRATIONSHÖLLE                    checkout               it   mit            mmcom         co
AUSWEG AUS DERINTEGRATIONSHÖLLE                    checkout               it   mit            mmcom         co
AUSWEG AUS DERINTEGRATIONSHÖLLE                    checkout               it                               info   mit     ...
AUSWEG AUS DERINTEGRATIONSHÖLLE                    checkout               it                               info   mit     ...
JENKINS KANN NICHT ALLES        ÜBERNEHMEN...• Gemeinsame       Codebasis und ein SCM sind nötig.• Der    Build muss vollk...
VORTEILE VON CONTINUOUS       INTEGRATION• Reduzierung   der Risiken.• Verbesserung    der Produktqualität.• Applikation„f...
INSTALLATION VON JENKINS• Downloaden$ mkdir /usr/local/jenkins$ cd /usr/local/jenkins$ wget http://mirrors.jenkins-ci.org/...
FERTIG.
JENKINS SPRECH• Alles, was   Jenkins für Sie erledigt, ist ein Job.• Von   jedem Job gibt es mehrere Builds.• Jeder   Buil...
ANLEGEN EINES JOBS
ANLEGEN EINES JOBS
ANLEGEN EINES JOBS
STARTEN EINES BUILDS
STARTEN EINES BUILDS
STARTEN EINES BUILDS
STARTEN EINES BUILDS
STARTEN EINES BUILDS
STATUS DES BUILDS= Erfolgreich      = Green Balls                     Plugin= Instabil= Fehlgeschlagen= wird gebaut= Keine...
WAR DA NICHT WAS MIT       „CONTINUOUS“?• Jenkins   kann Builds zu bestimmten Zeiten starten.• „Nightly   Builds“.• Jenkin...
BUILD AUSLÖSER
PROJEKTGESUNDHEIT>80%   >60%   >40%   >20%   ≦20%
DER ABLAUF BEICONTINUOUS INTEGRATION   Checkout   Build   Process
CHECKOUT• Jenkins   unterstützt verschiedene SCM-Systeme über Plugins.• Installiert   sind CVS und SVN.• Weitere    können...
KOMPILIEREN UND       SYNTAKTISCHE PRÜFUNG• Prüfung, ob   der Quellcode syntaktische Fehler enthält.• In  einigen Sprachen...
AUTOMATISIERTE TESTS• Software   kann auf mehreren Ebenen getestet werden.  • Unit-Tests  • Integrationstests  • Akzeptanz...
POST-PROCESS SCHRITTE         UND BERICHTE• Jenkins      Plugins führen keine Tests aus, erzeugen keine Dokumentationen un...
DOKUMENTATION              GENERIEREN• Generieren der API-Dokumentation aus dem Quellcode über javadoc, phpDocumentor, Doc...
CONTINUOUS INTEGRATION  IST NICHT DAS ENDE.• Syntaktische             Prüfung und automatisierte Tests stellen sicher, das...
Kann ich sonst noch etwas für Sie tun?
CONTINUOUS INSPECTION• Entspricht   mein Code meinen Coding Guidelines?• Ist   mein Code zu kompliziert?• Enthält   mein C...
Ihr kostenloserSenior-Entwickler,der rund um die UhrCode-Reviewsmacht.
CODING STANDARDS               PRÜFEN• Verwenden Sie Checkstyle, oder ein Tool, das Checkstyle- kompatible Reports ausgibt...
METRIKEN ERZEUGEN• Integrieren           Sie verschiedene Tools, die Code-Metriken aus ihrem Quellcode ermitteln:  • Anzah...
CODE METRIKEN
DUPLIZIERTEN CODE              ERKENNEN• Integrieren   Sie Tools, die duplizierten Code erkennen, z.B.  • PHP   Copy/Paste...
ALLES ZUSAMMENFÜHREN• Jedes      der Plugins erstellt einen eigenen Report; bis man alle Metriken gesehen hat, muss man re...
PHP_CODEBROWSER
SONAR
STATIC ANALYSIS COLLECTOR
VERMEIDEN SIE EINEN    BUILD-STAU.
HALTEN SIE DIE             BUILD-ZEITEN KURZ• Messen       Sie, wie lange ihr Build dauert und suchen Sie nach Wege diesen...
EINFÜHRUNG VONCONTINUOUS INTEGRATION• Gehen    Sie schrittweise vor, beginnen Sie mit einem Projekt.• DefinierenSie am Anfa...
JENKINS PLUGINS• Jenkins   lässt sich sehr einfach über Plugins erweitern.• Plugins können einfach über Web-Interface oder...
EIGENE PLUGINS SCHREIBEN• Plugins   werden in Java geschrieben und mit Maven gebaut• Ein   Plugin kann in 60 Sekunden erst...
JENKINS REMOTE API• Jenkins bietet eine XML-, JSON- und Python API an: http://localhost:8080/api/xml http://localhost:8080...
JENKINS BUILD MONITOR           FÜR FIREFOX• Fügt einen Eintrag in das Firefox-Kontext-Menü hinzu.
JENKINS BUILD MONITOR           FÜR FIREFOX• Fügt einen Eintrag in das Firefox-Kontext-Menü hinzu.• Zeigtdes Status der Jo...
JENKINS BUILD MONITOR           FÜR FIREFOX• Fügt einen Eintrag in das Firefox-Kontext-Menü hinzu.• Zeigtdes Status der Jo...
HUDSON STATUS FÜR CHROME
HUDSON STATUS FÜR CHROME
IPHONE HELPER
JENKINS UND PHP
Diese AufgabeübernimmtSebastian für Sie.
JENKINS PHP TEMPLATE• Entwickelt   von Sebastian Bergmann.• Stellt       eine fertige Konfiguration für eine PHP-basierten ...
INSTALLATION DER PLUGINS$   wget   http://localhost:8080/jnlpJars/jenkins-cli.jar$   java   -jar jenkins-cli.jar -s ... in...
JENKINS PHP TEMPLATE• Template   installieren$ cd $JENKINS_HOME/jobs$ git clone git://github.com/sebastianbergmann/php-jen...
TOOLS FÜR DAS PROJEKT• Verschiedene    QA-Tools installieren$ pear config-set auto_discover 1$ pear install pear.phpqatool...
UND LOS GEHT‘S...
ENTHALTEN IM TEMPLATE• Syntaktische Analyse   mit   • CodingStandard Violations „php -l“                       mit PHP_Cod...
VIELEN DANK.   schst@php.net       @schst
ONE MORE THING...
GROWL NOTIFICATIONS
CONTINUOUS INTEGRATION        GAME• Benutzer bekommen Pluspunkte für erfolgreiche Builds und Minuspunkte für fehlgeschlage...
CHUCK NORRIS PLUGIN
BIG RED BUTTON
EXTREME FEEDBACK BEARS
JENKINS UND NABAZTAG
WER BRICHT DEN BUILD?
MEHR INFORMATIONENTheorie & Praxis   Praxis   Fokus auf PHP
VIELEN DANK.   schst@php.net       @schst
Continuous Integration mit Jenkins
Continuous Integration mit Jenkins
Continuous Integration mit Jenkins
Nächste SlideShare
Wird geladen in …5
×

Continuous Integration mit Jenkins

9.591 Aufrufe

Veröffentlicht am

Folien meines Vortrags zu Continuous Integration mit Jenkins auf der web Devon 2011 in Hamburg.

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

Keine Downloads
Aufrufe
Aufrufe insgesamt
9.591
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
354
Aktionen
Geteilt
0
Downloads
122
Kommentare
0
Gefällt mir
10
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Continuous Integration mit Jenkins

  1. 1. CONTINUOUS INTEGRATION MIT JENKINS Web DevCon 2011 InterContinental Hotel, Hamburg 17. Oktober 2011
  2. 2. DANTEALIGHIERI * 1265 ✝ 1321
  3. 3. Dante Alighieri DieGöttlicheKomödie
  4. 4. DIE ZEHN HÖLLENKREISEVorhölle Die Wollustigen Die DieSchlemmer Verschwender Die Zornigen Die Ketzer Die Gewaltätigen Die Mörder & Räuber Die Betrüger Die Verräter
  5. 5. DAS WAR 1320 A.D.
  6. 6. WIR HABEN 2011.
  7. 7. DER ELFTE HÖLLENKREISVorhölle Die Wollustigen Die DieSchlemmer Verschwender Die Zornigen Die Ketzer Die Gewaltätighen Die Mörder & Räuber Die Betrüger Die Verräter Die Spätintegrierer
  8. 8. SPÄTINTEGRIERER KOMMEN IN DIEINTEGRATIONSHÖLLE
  9. 9. SIE WOLLEN NICHT MEHR IN DIE INTEGRATIONSHÖLLE? Jenkins
  10. 10. STEPHAN SCHMIDT Head of Web SalesDevelopment bei der 1&1 Internet AG PHP seit 1999 Autor & Redner
  11. 11. HAB‘S NOCH AUF KEINEEURO-MÜNZE GESCHAFFT :(
  12. 12. WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE?
  13. 13. WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE? Tage bis zur Deadline : 20
  14. 14. WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE? Tage bis zur Deadline : 20 dev dev
  15. 15. WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE? Tage bis zur Deadline : 10 dev dev
  16. 16. WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE? Tage bis zur Deadline : 5 dev dev
  17. 17. WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE? Tage bis zur Deadline : 0 dev dev
  18. 18. WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE? Tage bis zur Deadline : 0 dev dev
  19. 19. WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE? Tage bis zur Deadline : 0 dev dev ✘ integrate
  20. 20. WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE? Tage bis zur Deadline : 0 deploy dev dev ✘ integrate
  21. 21. WIE KOMMT MAN IN DIEINTEGRATIONSHÖLLE? Tage bis zur Deadline : 0 deploy dev dev ✘ integrate
  22. 22. WIE KOMMT MAN IN DIE INTEGRATIONSHÖLLE?• Esfinden parallele Entwicklungen auf einzelnen Rechnern der Mitarbeiter statt.• Niemand hat alle Änderungen im Blick.• Kurzvor dem Release-Termin werden alle Änderungen für das nächste Release zusammengeführt.• Es werden keine automatisierten Tests erstellt.• Es bleibt keine Zeit mehr, Seiteneffekte zu überprüfen.
  23. 23. WIE SIEHT ES IN DER INTEGRATIONSHÖLLE AUS?• Es ist dunkel, meistens wird bis spät in die Nacht integriert.• Die Entwickler haben feuerrote Köpfe.• Schuldzuweisungen sind die einzige Kommunikation.• Es werden hektisch Bugfixes für die Bugfixes der Bugfixes gemacht.• Spitze oder harte Gegenstände sollten weggeschlossen werden.
  24. 24. WIE ENTKOMMEN SIE DER INTEGRATIONSHÖLLE?• Erhöhen Sie die Frequenz der Integrationen in Ihrem Projekt.• Führen Sie für Ihre Applikationen bei jeder Änderung einen vollständigen Build durch.• WeisenSie damit jeden Entwickler auf möglichst frühzeitig auf Probleme hin.• Gefahr erkannt - Gefahr gebannt.
  25. 25. Jenkins ist ihrpersönlicher CIButler.
  26. 26. AUSWEG AUS DERINTEGRATIONSHÖLLE
  27. 27. AUSWEG AUS DERINTEGRATIONSHÖLLE mitcom
  28. 28. AUSWEG AUS DERINTEGRATIONSHÖLLE it mit mmcom co
  29. 29. AUSWEG AUS DERINTEGRATIONSHÖLLE it mit mmcom co
  30. 30. AUSWEG AUS DERINTEGRATIONSHÖLLE checkout it mit mmcom co
  31. 31. AUSWEG AUS DERINTEGRATIONSHÖLLE checkout it mit mmcom co
  32. 32. AUSWEG AUS DERINTEGRATIONSHÖLLE checkout it info mit mmcom co
  33. 33. AUSWEG AUS DERINTEGRATIONSHÖLLE checkout it info mit mmcom co
  34. 34. JENKINS KANN NICHT ALLES ÜBERNEHMEN...• Gemeinsame Codebasis und ein SCM sind nötig.• Der Build muss vollkommen automatisiert funktionieren.• Ihr Build muss schnell sein.• Ihre Applikation muss über automatisierte Tests verfügen.
  35. 35. VORTEILE VON CONTINUOUS INTEGRATION• Reduzierung der Risiken.• Verbesserung der Produktqualität.• Applikation„funktioniert“ zu jeder Zeit, sie haben jederzeit ein deploy-fähiges Artefakt.• Konzentration auf das Wesentliche.• Dokumentierter Build-Prozess.
  36. 36. INSTALLATION VON JENKINS• Downloaden$ mkdir /usr/local/jenkins$ cd /usr/local/jenkins$ wget http://mirrors.jenkins-ci.org/war-stable/latest/↵ jenkins.war• Starten$ export JENKINS_HOME=/usr/local/jenkins$ java -jar jenkins.war
  37. 37. FERTIG.
  38. 38. JENKINS SPRECH• Alles, was Jenkins für Sie erledigt, ist ein Job.• Von jedem Job gibt es mehrere Builds.• Jeder Build führt zu einem Artefakt.• DieBuilds werden in eine Queue gelegt und von dort abgearbeitet.
  39. 39. ANLEGEN EINES JOBS
  40. 40. ANLEGEN EINES JOBS
  41. 41. ANLEGEN EINES JOBS
  42. 42. STARTEN EINES BUILDS
  43. 43. STARTEN EINES BUILDS
  44. 44. STARTEN EINES BUILDS
  45. 45. STARTEN EINES BUILDS
  46. 46. STARTEN EINES BUILDS
  47. 47. STATUS DES BUILDS= Erfolgreich = Green Balls Plugin= Instabil= Fehlgeschlagen= wird gebaut= Keine Daten
  48. 48. WAR DA NICHT WAS MIT „CONTINUOUS“?• Jenkins kann Builds zu bestimmten Zeiten starten.• „Nightly Builds“.• Jenkinskann regelmäßig ihr SCM pollen und den Build dann starten, sobald sich etwas verändert hat.• Feedback erfolgt in den meisten Fällen per Mail.• Die Ergebnisse der Builds werden archiviert.
  49. 49. BUILD AUSLÖSER
  50. 50. PROJEKTGESUNDHEIT>80% >60% >40% >20% ≦20%
  51. 51. DER ABLAUF BEICONTINUOUS INTEGRATION Checkout Build Process
  52. 52. CHECKOUT• Jenkins unterstützt verschiedene SCM-Systeme über Plugins.• Installiert sind CVS und SVN.• Weitere können einfach über den Plugin-Manager installiert werden.
  53. 53. KOMPILIEREN UND SYNTAKTISCHE PRÜFUNG• Prüfung, ob der Quellcode syntaktische Fehler enthält.• In einigen Sprachen schon automatisch enthalten, da der Quellcode kompiliert werden muss.• Inanderen Sprachen können Tools eingesetzt werden (z.B. JSLint für JavaScript, php -l für PHP)
  54. 54. AUTOMATISIERTE TESTS• Software kann auf mehreren Ebenen getestet werden. • Unit-Tests • Integrationstests • Akzeptanztests• Jenkins erzeugt für die meisten xUnit-Frameworks Berichte über Testergebnisse und Testabdeckung.
  55. 55. POST-PROCESS SCHRITTE UND BERICHTE• Jenkins Plugins führen keine Tests aus, erzeugen keine Dokumentationen und erheben keine Metriken.• Dies muss ihr Build-Prozess leisten.• Jenkinserstellt „nur“ Berichte oder kopiert und archiviert bereits erstellte Berichte.• Interessant ist dabei die Entwicklung über die Zeit.
  56. 56. DOKUMENTATION GENERIEREN• Generieren der API-Dokumentation aus dem Quellcode über javadoc, phpDocumentor, DocBlox, etc.• Jenkins liefert noch weitere Plugins, um zusätzliche Dokumentationen zu erstellen, wie... • SchemaSpy • TaskScanner
  57. 57. CONTINUOUS INTEGRATION IST NICHT DAS ENDE.• Syntaktische Prüfung und automatisierte Tests stellen sicher, dass Ihre Applikation funktioniert.• Aber: Eine Applikation, die funktioniert, ist noch lange keine gute und einfach zu wartende Applikation :(
  58. 58. Kann ich sonst noch etwas für Sie tun?
  59. 59. CONTINUOUS INSPECTION• Entspricht mein Code meinen Coding Guidelines?• Ist mein Code zu kompliziert?• Enthält mein Code ungenutzte Variablen, Klassen, Parameter?• Enthält mein Code typische Programmierfehler?
  60. 60. Ihr kostenloserSenior-Entwickler,der rund um die UhrCode-Reviewsmacht.
  61. 61. CODING STANDARDS PRÜFEN• Verwenden Sie Checkstyle, oder ein Tool, das Checkstyle- kompatible Reports ausgibt, um Ihren Code auf Verletzungen zu prüfen.• Diese werden direkt von einem Jenkins-Plugin verarbeitet.• Das Jenkins Plugin „Warnings“ untersucht die Ausgaben im Build nach typischen Warning-Meldungen.
  62. 62. METRIKEN ERZEUGEN• Integrieren Sie verschiedene Tools, die Code-Metriken aus ihrem Quellcode ermitteln: • Anzahl der Zeilen, Klassen, Comment-Ratio, ... • Zyklomatische Komplexität• Ausgabedaten der meisten Tools können von verschiedenen Jenkins-Plugins verarbeitet und visualisiert werden.
  63. 63. CODE METRIKEN
  64. 64. DUPLIZIERTEN CODE ERKENNEN• Integrieren Sie Tools, die duplizierten Code erkennen, z.B. • PHP Copy/Paste Detector• Dieerzeugte XML-Datei kann direkt von einem Jenkins-Plugin verarbeitet werden.
  65. 65. ALLES ZUSAMMENFÜHREN• Jedes der Plugins erstellt einen eigenen Report; bis man alle Metriken gesehen hat, muss man recht häufig klicken.• Plugins führen die Daten zusammen: • PHP_CodeBrowser verarbeitet die Logs stellt die Ergebnisse direkt im Sourcecode dar. • Sonar-Plugin meldet die Daten an Sonar. • Static Analysis Collector kann für Java eingesetzt werden.
  66. 66. PHP_CODEBROWSER
  67. 67. SONAR
  68. 68. STATIC ANALYSIS COLLECTOR
  69. 69. VERMEIDEN SIE EINEN BUILD-STAU.
  70. 70. HALTEN SIE DIE BUILD-ZEITEN KURZ• Messen Sie, wie lange ihr Build dauert und suchen Sie nach Wege diesen zu verkürzen, z.B. parallele Ausführung der Code-Metrik-Tools.• Teilen Sie die Build-Schritte in Einzelbuilds • Fail-Early, bei syntaktischen Fehlern keine Metriken. • Langsame Schritte nur im Nightly-Build.• Bauen Sie nicht jedes Changeset.
  71. 71. EINFÜHRUNG VONCONTINUOUS INTEGRATION• Gehen Sie schrittweise vor, beginnen Sie mit einem Projekt.• DefinierenSie am Anfang sehr wenige Regeln (z.B. Tests müssen durchlaufen).• Diese müssen jedoch strikt eingehalten werden.• Erheben Sie nur die Metriken, die Sie auch verstehen und die für Sie wichtig sind.
  72. 72. JENKINS PLUGINS• Jenkins lässt sich sehr einfach über Plugins erweitern.• Plugins können einfach über Web-Interface oder CLI-Client installiert werden.• Aktuell (Stand 11.10) bereits 470 Plugins.• Mit Plugins ist in Jenkins alles erweiterbar.
  73. 73. EIGENE PLUGINS SCHREIBEN• Plugins werden in Java geschrieben und mit Maven gebaut• Ein Plugin kann in 60 Sekunden erstellt und gebaut werden.$ mvn jpi:create// Interaktive Eingabe des Namens$ mvn jpi:run// Startet Jenkins-Testinstanz mit dem Plugin$ mvn package// Erstellt installationsfähige HPI-Datei
  74. 74. JENKINS REMOTE API• Jenkins bietet eine XML-, JSON- und Python API an: http://localhost:8080/api/xml http://localhost:8080/api/json http://localhost:8080/api/python• Dokumentation zur API gibt es unter: http://localhost:8080/api• An fast jede URL kann man einfach /api/* anhängen.
  75. 75. JENKINS BUILD MONITOR FÜR FIREFOX• Fügt einen Eintrag in das Firefox-Kontext-Menü hinzu.
  76. 76. JENKINS BUILD MONITOR FÜR FIREFOX• Fügt einen Eintrag in das Firefox-Kontext-Menü hinzu.• Zeigtdes Status der Jobs in der Taskleiste an.
  77. 77. JENKINS BUILD MONITOR FÜR FIREFOX• Fügt einen Eintrag in das Firefox-Kontext-Menü hinzu.• Zeigtdes Status der Jobs in der Taskleiste an.• Ermöglicht es, Builds direkt aus Firefox anzustoßen.
  78. 78. HUDSON STATUS FÜR CHROME
  79. 79. HUDSON STATUS FÜR CHROME
  80. 80. IPHONE HELPER
  81. 81. JENKINS UND PHP
  82. 82. Diese AufgabeübernimmtSebastian für Sie.
  83. 83. JENKINS PHP TEMPLATE• Entwickelt von Sebastian Bergmann.• Stellt eine fertige Konfiguration für eine PHP-basierten Jenkins Job zur Verfügung.• Auf der Website findet man gleich noch ein Ant-Build-Skript für PHP-Projekte. http://jenkins-php.org/
  84. 84. INSTALLATION DER PLUGINS$ wget http://localhost:8080/jnlpJars/jenkins-cli.jar$ java -jar jenkins-cli.jar -s ... install-plugin checkstyle$ java -jar jenkins-cli.jar -s ... install-plugin cloverphp$ java -jar jenkins-cli.jar -s ... install-plugin dry$ java -jar jenkins-cli.jar -s ... install-plugin htmlpublisher$ java -jar jenkins-cli.jar -s ... install-plugin jdepend$ java -jar jenkins-cli.jar -s ... install-plugin plot$ java -jar jenkins-cli.jar -s ... install-plugin pmd$ java -jar jenkins-cli.jar -s ... install-plugin violations$ java -jar jenkins-cli.jar -s ... install-plugin xunit$ java -jar jenkins-cli.jar -s ... safe-restart
  85. 85. JENKINS PHP TEMPLATE• Template installieren$ cd $JENKINS_HOME/jobs$ git clone git://github.com/sebastianbergmann/php-jenkins-↵ template.git php-template$ chown -R jenkins:nogroup php-template/• Config neu laden$ java -jar jenkins-cli.jar -s ... reload-configuration
  86. 86. TOOLS FÜR DAS PROJEKT• Verschiedene QA-Tools installieren$ pear config-set auto_discover 1$ pear install pear.phpqatools.org/phpqatools PHPDocumentor• ant-basiertes Build-File von der Website runterladen.• Komplettes Beispiel-Projekt ist auf GitHub verfügbar https://github.com/thePHPcc/bankaccount/
  87. 87. UND LOS GEHT‘S...
  88. 88. ENTHALTEN IM TEMPLATE• Syntaktische Analyse mit • CodingStandard Violations „php -l“ mit PHP_CodeSniffer und PHP Mess Detector• Ausführen von PHPUnit- Tests. • Duplizierter Code mit PHP Copy/Paste Detector.• API-Dokumentation mit phpDocumentor • Zusammenfassung über PHP_CodeBrowser.• Metriken mit phploc PHP_Depend.
  89. 89. VIELEN DANK. schst@php.net @schst
  90. 90. ONE MORE THING...
  91. 91. GROWL NOTIFICATIONS
  92. 92. CONTINUOUS INTEGRATION GAME• Benutzer bekommen Pluspunkte für erfolgreiche Builds und Minuspunkte für fehlgeschlagene Builds.• Ergebnisseder statischen Analyse können auch mit einfließen.
  93. 93. CHUCK NORRIS PLUGIN
  94. 94. BIG RED BUTTON
  95. 95. EXTREME FEEDBACK BEARS
  96. 96. JENKINS UND NABAZTAG
  97. 97. WER BRICHT DEN BUILD?
  98. 98. MEHR INFORMATIONENTheorie & Praxis Praxis Fokus auf PHP
  99. 99. VIELEN DANK. schst@php.net @schst

×