Jenkins und Perl-Projekte

67
24

description

 

Transcript of Jenkins und Perl-Projekte

Page 1: Jenkins und Perl-Projekte

24

Page 2: Jenkins und Perl-Projekte

Ein Tag um die Welt zu retten das Release fertig zu machen!

Page 3: Jenkins und Perl-Projekte

1 1 1 1 1 1 1

1111111

15 16 17 18 19 20 21

28272625242322

1 2 3 4 5 6 7

141312111098

313029

HEUTE

Release

Page 4: Jenkins und Perl-Projekte

1 1 1 1 1 1 1

1111111

15 16 17 18 19 20 21

28272625242322

1 2 3 4 5 6 7

141312111098

313029

24

Release!

Page 5: Jenkins und Perl-Projekte

09:00arbeiten

Page 6: Jenkins und Perl-Projekte
Page 7: Jenkins und Perl-Projekte

16:40testen

Page 8: Jenkins und Perl-Projekte

1..3ok 1ok 2ok 3

1..6ok 1ok 2ok 3ok 4ok 5ok 6

Page 9: Jenkins und Perl-Projekte

17:00commit

Page 10: Jenkins und Perl-Projekte

git commit -m „...“ -agit push origin master

git commit -m „...“ -agit push origin master

Page 11: Jenkins und Perl-Projekte

00:00Release

Page 12: Jenkins und Perl-Projekte

Installation Paket 1Installation Paket 2Update DatenbankInstallation Paket 3Installation Paket 4Rollback Paket 4Installation Abhängigkeiten Paket 5Installation Paket 5Installation Paket 4Live-Schalten

Page 13: Jenkins und Perl-Projekte
Page 14: Jenkins und Perl-Projekte

So nahm das Schicksal seinen Lauf...

Page 15: Jenkins und Perl-Projekte

27.01.09:00

Teammeeting

Page 16: Jenkins und Perl-Projekte

Am 24.02. gibt’s ein ReleaseJack: Sie setzen Feature 1 um

Chloe: Sie implementieren Feature 2

Page 17: Jenkins und Perl-Projekte

07.02.09:00Büros

Page 18: Jenkins und Perl-Projekte
Page 19: Jenkins und Perl-Projekte

20.02.11:00Büro

Page 20: Jenkins und Perl-Projekte

git commit -m „...“ -agit commit -m „...“ -a

Page 21: Jenkins und Perl-Projekte

1..3ok 1ok 2ok 3

1..6ok 1ok 2ok 3ok 4ok 5ok 6

Page 22: Jenkins und Perl-Projekte

23.02.17:00Büro

Page 23: Jenkins und Perl-Projekte

git commit -m „...“ -agit commit -m „...“ -a

Page 24: Jenkins und Perl-Projekte

1..3ok 1ok 2ok 3

1..6ok 1ok 2ok 3ok 4ok 5ok 6

Page 25: Jenkins und Perl-Projekte

Wie es hätte laufen können...

Page 26: Jenkins und Perl-Projekte

27.01.09:00

Teammeeting

Page 27: Jenkins und Perl-Projekte

Am 24.02. gibt’s ein ReleaseJack: Sie setzen Feature 1 um

Chloe: Sie implementieren Feature 2Wir setzen jetzt Jenkins ein...

Page 28: Jenkins und Perl-Projekte

07.02.09:00Büros

Page 29: Jenkins und Perl-Projekte
Page 30: Jenkins und Perl-Projekte

20.02.11:00Büro

Page 31: Jenkins und Perl-Projekte

git commit -m „...“ -agit commit -m „...“ -a

Page 32: Jenkins und Perl-Projekte

1..3ok 1ok 2ok 3

1..6ok 1ok 2ok 3ok 4ok 5ok 6

Page 33: Jenkins und Perl-Projekte

1..9ok 1ok 2ok 3ok 4ok 5ok 6ok 7not ok 8ok 9

Page 34: Jenkins und Perl-Projekte

Sie haben Post!

Page 35: Jenkins und Perl-Projekte

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-^\" isn't 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-^B\0OM-^V^G&" isn't numeric in numeric eq (==) at (eval in cmp_ok) Argument "" isn't 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

Page 36: Jenkins und Perl-Projekte

23.02.17:00Büro

Page 37: Jenkins und Perl-Projekte

git commit -m „...“ -agit commit -m „...“ -a

Page 38: Jenkins und Perl-Projekte

1..3ok 1ok 2ok 3

1..6ok 1ok 2ok 3ok 4ok 5ok 6

Page 39: Jenkins und Perl-Projekte

Sie haben Post!

Page 40: Jenkins und Perl-Projekte

1..9ok 1ok 2ok 3ok 4ok 5ok 6ok 7ok 8ok 9

Page 41: Jenkins und Perl-Projekte

Jenkins build is back to normal : perl5 #861

Page 42: Jenkins und Perl-Projekte

Continuous Integration

● Integration● Zusammenfügen von Programmkomponenten

● Continuous● Kontinuierlich / stetig / regelmäßig● Nicht erst kurz vor Release

Page 43: Jenkins und Perl-Projekte

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

Page 44: Jenkins und Perl-Projekte

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

Page 45: Jenkins und Perl-Projekte

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

Page 46: Jenkins und Perl-Projekte

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, ...)

Page 47: Jenkins und Perl-Projekte

Jenkins / Hudson

● Intuitive Bedienung● REST-Schnittstelle● Flexibel / Erweiterbar● Verteilte Build-Vorgänge über mehrere Server● Open Source● Keine native Unterstützung für Perl

Page 48: Jenkins und Perl-Projekte

Installation Jenkins

● Gängige Linuxe: Über die Paketverwaltung● Windows: Installer von jenkins-ci.org

herunterladen und entpacken

Page 49: Jenkins und Perl-Projekte

Konfiguration

● Sehr fein einstellbar, hier aber nicht Thema● Benutzverwaltung● Apache-Anbindung● SMTP-Anbindung

Page 50: Jenkins und Perl-Projekte

Arten von Projekten

● Maven 2/3● Externen Job überwachen● Multikonfigurationsprojekt● FreeStyle

Page 51: Jenkins und Perl-Projekte

Multikonfigurationsprojekte

● Sehr flexibel konfigurierbar● Praktisch für Tests verschiedener

Konfigurationen● Versch. Perl-Versionen● Versch. Datenbanken

Page 52: Jenkins und Perl-Projekte

Jenkins und Perl

● Keine native Unterstützung für Perl● Kann beliebige Tools aufrufen● Auf CPAN findet man alle notwendigen Sachen

Page 53: Jenkins und Perl-Projekte

FreeStyle Projekte

● Für Perl-Projekte die richtige Wahl● Frei konfigurierbar

Page 54: Jenkins und Perl-Projekte

Projekt einrichten

Page 55: Jenkins und Perl-Projekte

Projekt einrichten

Page 56: Jenkins und Perl-Projekte

Projekt einrichten

Page 57: Jenkins und Perl-Projekte

Projekt einrichten

Page 58: Jenkins und Perl-Projekte

Projekt einrichten

Page 59: Jenkins und Perl-Projekte

Projekt einrichten

Page 60: Jenkins und Perl-Projekte

Fertig!

Page 61: Jenkins und Perl-Projekte

Builds laufen lassen

● Manuell● Periodisch● Durch commit

Page 62: Jenkins und Perl-Projekte

Build laufen lassen

Page 63: Jenkins und Perl-Projekte

Devel::Cover

Page 64: Jenkins und Perl-Projekte

Devel::Cover

Page 65: Jenkins und Perl-Projekte

Devel::Cover

Page 66: Jenkins und Perl-Projekte

Mehr CI für Perl

● Travis-CI (travis-ci.org)● Jitterbug● Hudson/Jenkins● Test::Continuous

Page 67: Jenkins und Perl-Projekte

Literatur

● $foo – Perl-Magazin Nr. 21 (01/2012)● Jenkins – kurz & gut (O'Reilly)● Continuous Integration mit Hudson (d.punkt

Verlag)