24
Ein Tag um die Welt zu rettendas Release fertig zu machen!
1    2     1    3          1         4                    1    5                         1    6                           ...
1    2     1    3          1     4                1    5                     1    6                          1    7       ...
09:00arbeiten
16:40testen
1..3ok 1ok 2ok 3       1..6       ok 1       ok 2       ok 3       ok 4       ok 5       ok 6
17:00commit
git commit -m „...“ -agit commit -m „...“ -a   git push origin mastergit push origin master
00:00Release
Installation Paket 1Installation Paket 2Update DatenbankInstallation Paket 3Installation Paket 4Rollback Paket 4Installati...
So nahm das Schicksal seinen Lauf...
27.01.   09:00Teammeeting
Am 24.02. gibt’s ein Release  Jack: Sie setzen Feature 1 umChloe: Sie implementieren Feature 2
07.02.09:00Büros
20.02.11:00 Büro
git commit -m „...“ -agit commit -m „...“ -a
1..3ok 1ok 2ok 3       1..6       ok 1       ok 2       ok 3       ok 4       ok 5       ok 6
23.02.17:00 Büro
git commit -m „...“ -agit commit -m „...“ -a
1..3ok 1ok 2ok 3       1..6       ok 1       ok 2       ok 3       ok 4       ok 5       ok 6
Wie es hätte laufen können...
27.01.   09:00Teammeeting
Am 24.02. gibt’s ein Release  Jack: Sie setzen Feature 1 umChloe: Sie implementieren Feature 2   Wir setzen jetzt Jenkins ...
07.02.09:00Büros
20.02.11:00 Büro
git commit -m „...“ -agit commit -m „...“ -a
1..3ok 1ok 2ok 3       1..6       ok 1       ok 2       ok 3       ok 4       ok 5       ok 6
1..9ok 1ok 2ok 3ok 4ok 5ok 6ok 7not ok 8ok 9
Sie haben Post!
See <http://perl5.git.perl.org:8080/job/perl5/860/changes>Changes:[jack] Add description of new change process for http://...
23.02.17:00 Büro
git commit -m „...“ -agit commit -m „...“ -a
1..3ok 1ok 2ok 3       1..6       ok 1       ok 2       ok 3       ok 4       ok 5       ok 6
Sie haben Post!
1..9ok 1ok 2ok 3ok 4ok 5ok 6ok 7ok 8ok 9
Jenkins build is back to normal : perl5 #861
Continuous Integration●   Integration    ●   Zusammenfügen von Programmkomponenten●   Continuous    ●   Kontinuierlich / s...
Vorteil CI●   Release-Prozess wird formalisiert●   Rechner spürt keine Hektik●   Rechner vergisst den Termin nicht●   Auto...
Frühzeitige Fehlerentdeckung hilft●   Kosten für Fehlerbehebung steigt stark mit der    Zeit des Projekts●   Je früher ein...
CI ist...●   … ein Mittel um Risiken zu minimieren●   … eine Hilfe, die Qualität von Software zu    steigern●   … eine Mög...
Jenkins / Hudson●   Continuous Integration Server●   In Java geschrieben (mind. JRE 1.5)●   Hauptsächlich für Java-Projekt...
Jenkins / Hudson●   Intuitive Bedienung●   REST-Schnittstelle●   Flexibel / Erweiterbar●   Verteilte Build-Vorgänge über m...
Installation Jenkins●   Gängige Linuxe: Über die Paketverwaltung●   Windows: Installer von jenkins-ci.org    herunterladen...
Konfiguration●   Sehr fein einstellbar, hier aber nicht Thema●   Benutzverwaltung●   Apache-Anbindung●   SMTP-Anbindung
Arten von Projekten●   Maven 2/3●   Externen Job überwachen●   Multikonfigurationsprojekt●   FreeStyle
Multikonfigurationsprojekte●   Sehr flexibel konfigurierbar●   Praktisch für Tests verschiedener    Konfigurationen    ●  ...
Jenkins und Perl●   Keine native Unterstützung für Perl●   Kann beliebige Tools aufrufen●   Auf CPAN findet man alle notwe...
FreeStyle Projekte●   Für Perl-Projekte die richtige Wahl●   Frei konfigurierbar
Projekt einrichten
Projekt einrichten
Projekt einrichten
Projekt einrichten
Projekt einrichten
Projekt einrichten
Fertig!
Builds laufen lassen●   Manuell●   Periodisch●   Durch commit
Build laufen lassen
Devel::Cover
Devel::Cover
Devel::Cover
Mehr CI für Perl●   Travis-CI (travis-ci.org)●   Jitterbug●   Hudson/Jenkins●   Test::Continuous
Literatur●   $foo – Perl-Magazin Nr. 21 (01/2012)●   Jenkins – kurz & gut (OReilly)●   Continuous Integration mit Hudson (...
Jenkins und Perl-Projekte
Jenkins und Perl-Projekte
Jenkins und Perl-Projekte
Jenkins und Perl-Projekte
Nächste SlideShare
Wird geladen in …5
×

Jenkins und Perl-Projekte

1.291 Aufrufe

Veröffentlicht am

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.291
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
6
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Jenkins und Perl-Projekte

  1. 1. 24
  2. 2. Ein Tag um die Welt zu rettendas Release fertig zu machen!
  3. 3. 1 2 1 3 1 4 1 5 1 6 1 7 181 9 1 10 1 11 1 12 1 13 1 14 115 16 17 18 19 20 21 HEUTE22 23 24 25 26 27 28 Release29 30 31
  4. 4. 1 2 1 3 1 4 1 5 1 6 1 7 181 9 1 10 1 11 1 12 1 13 1 14 115 16 17 18 19 20 2122 23 24 24 25 26 27 28 Release!29 30 31
  5. 5. 09:00arbeiten
  6. 6. 16:40testen
  7. 7. 1..3ok 1ok 2ok 3 1..6 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6
  8. 8. 17:00commit
  9. 9. git commit -m „...“ -agit commit -m „...“ -a git push origin mastergit push origin master
  10. 10. 00:00Release
  11. 11. Installation Paket 1Installation Paket 2Update DatenbankInstallation Paket 3Installation Paket 4Rollback Paket 4Installation Abhängigkeiten Paket 5Installation Paket 5Installation Paket 4Live-Schalten
  12. 12. So nahm das Schicksal seinen Lauf...
  13. 13. 27.01. 09:00Teammeeting
  14. 14. Am 24.02. gibt’s ein Release Jack: Sie setzen Feature 1 umChloe: Sie implementieren Feature 2
  15. 15. 07.02.09:00Büros
  16. 16. 20.02.11:00 Büro
  17. 17. git commit -m „...“ -agit commit -m „...“ -a
  18. 18. 1..3ok 1ok 2ok 3 1..6 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6
  19. 19. 23.02.17:00 Büro
  20. 20. git commit -m „...“ -agit commit -m „...“ -a
  21. 21. 1..3ok 1ok 2ok 3 1..6 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6
  22. 22. Wie es hätte laufen können...
  23. 23. 27.01. 09:00Teammeeting
  24. 24. Am 24.02. gibt’s ein Release Jack: Sie setzen Feature 1 umChloe: Sie implementieren Feature 2 Wir setzen jetzt Jenkins ein...
  25. 25. 07.02.09:00Büros
  26. 26. 20.02.11:00 Büro
  27. 27. git commit -m „...“ -agit commit -m „...“ -a
  28. 28. 1..3ok 1ok 2ok 3 1..6 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6
  29. 29. 1..9ok 1ok 2ok 3ok 4ok 5ok 6ok 7not ok 8ok 9
  30. 30. Sie haben Post!
  31. 31. See <http://perl5.git.perl.org:8080/job/perl5/860/changes>Changes:[jack] Add description of new change process for http://dev.perl.org------------------------------------------[...truncated 11121 lines...]../lib/DBM_Filter/t/01error.t ..................................... ok../lib/DirHandle.t ................................................ ok../dist/Math-BigInt/t/calling.t ................................... ok../lib/Net/netent.t ............................................... skipped: no loopback net../lib/Pod/t/InputObjects.t ....................................... ok../lib/Net/protoent.t ............................................. ok../lib/Pod/t/Select.t ............................................. ok../cpan/IO-Compress/t/109merge-deflate.t .......................... ok../lib/feature/unicode_strings.t .................................. ok../cpan/IO-Compress/t/109merge-gzip.t ............................. ok../cpan/IO-Compress/t/109merge-rawdeflate.t ....................... ok../cpan/IO-Compress/t/109merge-zip.t .............................. skipped: not implemented yet../lib/strict.t ................................................... ok../cpan/IO-Compress/t/110encode-bzip2.t ........................... okx2p/s2p.t ......................................................... ok../cpan/IO-Compress/t/110encode-deflate.t ......................... ok../cpan/IO-Compress/t/110encode-gzip.t ............................ ok../cpan/IO-Compress/t/110encode-rawdeflate.t ...................... ok../cpan/IO-Compress/t/110encode-zip.t ............................. ok../cpan/IO-Compress/t/111const-deflate.t .......................... ok../cpan/IO-Compress/t/999pod.t .................................... skipped: Test::Pod 1.00 required for testing POD../cpan/IO-Compress/t/cz-01version.t .............................. okArgument "xM-^" isnt numeric in numeric eq (==) at (eval in cmp_ok) t/cz-03zlib-v1.t line 1244.Argument "M-sTHM-LUHTM-ppM-tQM-0400PHM-NM-O-(-I-^B0OM-^V^G&" isnt numeric in numeric eq (==) at (eval in cmp_ok)Argument "" isnt numeric in numeric eq (==) at (eval in cmp_ok) t/cz-03zlib-v1.t line 1248.../cpan/IO-Compress/t/cz-03zlib-v1.t .............................. ok../cpan/IO-Compress/t/cz-05examples.t ............................. ok../cpan/IO-Compress/t/cz-06gzsetp.t ............................... ok../cpan/IO-Compress/t/cz-08encoding.t ............................. okTest Summary Report-------------------porting/podcheck.t (Wstat: 0 Tests: 1513 Failed: 1) Failed test: 288../cpan/CGI/t/tmpdir.t (Wstat: 0 Tests: 9 Failed: 0) TODO passed: 3-9Files=2321, Tests=535200, 315 wallclock secs (107.60 usr 94.18 sys + 891.95 cusr 345.99 csys = 1439.72 CPU)Result: FAILmake: *** [test_harness] Error 1Build step Execute shell marked build as failure
  32. 32. 23.02.17:00 Büro
  33. 33. git commit -m „...“ -agit commit -m „...“ -a
  34. 34. 1..3ok 1ok 2ok 3 1..6 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6
  35. 35. Sie haben Post!
  36. 36. 1..9ok 1ok 2ok 3ok 4ok 5ok 6ok 7ok 8ok 9
  37. 37. Jenkins build is back to normal : perl5 #861
  38. 38. Continuous Integration● Integration ● Zusammenfügen von Programmkomponenten● Continuous ● Kontinuierlich / stetig / regelmäßig ● Nicht erst kurz vor Release
  39. 39. Vorteil CI● Release-Prozess wird formalisiert● Rechner spürt keine Hektik● Rechner vergisst den Termin nicht● Automatisierte Mails rufen weniger Emotionen hervor● Standards werden forciert
  40. 40. Frühzeitige Fehlerentdeckung hilft● Kosten für Fehlerbehebung steigt stark mit der Zeit des Projekts● Je früher ein Fehler entdeckt wird, desto einfacher ist er im Code zu finden – Integrationsaufwand sinkt
  41. 41. CI ist...● … ein Mittel um Risiken zu minimieren● … eine Hilfe, die Qualität von Software zu steigern● … eine Möglichkeit, sich Gedanken zum Release-Prozess zu machen – und damit auch zu dokumentieren
  42. 42. Jenkins / Hudson● Continuous Integration Server● In Java geschrieben (mind. JRE 1.5)● Hauptsächlich für Java-Projekte gedacht● In „wenigen Sekunden“ installiert und prinzipiell lauffähig/einsatzbereit● Testing / Deployment● Sammelt Historie● Informiert Nutzer (E-Mail, SMS, Twitter, ...)
  43. 43. Jenkins / Hudson● Intuitive Bedienung● REST-Schnittstelle● Flexibel / Erweiterbar● Verteilte Build-Vorgänge über mehrere Server● Open Source● Keine native Unterstützung für Perl
  44. 44. Installation Jenkins● Gängige Linuxe: Über die Paketverwaltung● Windows: Installer von jenkins-ci.org herunterladen und entpacken
  45. 45. Konfiguration● Sehr fein einstellbar, hier aber nicht Thema● Benutzverwaltung● Apache-Anbindung● SMTP-Anbindung
  46. 46. Arten von Projekten● Maven 2/3● Externen Job überwachen● Multikonfigurationsprojekt● FreeStyle
  47. 47. Multikonfigurationsprojekte● Sehr flexibel konfigurierbar● Praktisch für Tests verschiedener Konfigurationen ● Versch. Perl-Versionen ● Versch. Datenbanken
  48. 48. Jenkins und Perl● Keine native Unterstützung für Perl● Kann beliebige Tools aufrufen● Auf CPAN findet man alle notwendigen Sachen
  49. 49. FreeStyle Projekte● Für Perl-Projekte die richtige Wahl● Frei konfigurierbar
  50. 50. Projekt einrichten
  51. 51. Projekt einrichten
  52. 52. Projekt einrichten
  53. 53. Projekt einrichten
  54. 54. Projekt einrichten
  55. 55. Projekt einrichten
  56. 56. Fertig!
  57. 57. Builds laufen lassen● Manuell● Periodisch● Durch commit
  58. 58. Build laufen lassen
  59. 59. Devel::Cover
  60. 60. Devel::Cover
  61. 61. Devel::Cover
  62. 62. Mehr CI für Perl● Travis-CI (travis-ci.org)● Jitterbug● Hudson/Jenkins● Test::Continuous
  63. 63. Literatur● $foo – Perl-Magazin Nr. 21 (01/2012)● Jenkins – kurz & gut (OReilly)● Continuous Integration mit Hudson (d.punkt Verlag)

×