Jenkins und Perl-Projekte
-
Upload
renee-baecker -
Category
Documents
-
view
1.036 -
download
0
description
Transcript of Jenkins und Perl-Projekte
24
Ein Tag um die Welt zu retten das Release fertig zu machen!
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
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!
09:00arbeiten
16:40testen
1..3ok 1ok 2ok 3
1..6ok 1ok 2ok 3ok 4ok 5ok 6
17:00commit
git commit -m „...“ -agit push origin master
git commit -m „...“ -agit push origin master
00:00Release
Installation Paket 1Installation Paket 2Update DatenbankInstallation Paket 3Installation Paket 4Rollback Paket 4Installation Abhängigkeiten Paket 5Installation Paket 5Installation Paket 4Live-Schalten
So nahm das Schicksal seinen Lauf...
27.01.09:00
Teammeeting
Am 24.02. gibt’s ein ReleaseJack: Sie setzen Feature 1 um
Chloe: Sie implementieren Feature 2
07.02.09:00Büros
20.02.11:00Büro
git commit -m „...“ -agit commit -m „...“ -a
1..3ok 1ok 2ok 3
1..6ok 1ok 2ok 3ok 4ok 5ok 6
23.02.17:00Büro
git commit -m „...“ -agit commit -m „...“ -a
1..3ok 1ok 2ok 3
1..6ok 1ok 2ok 3ok 4ok 5ok 6
Wie es hätte laufen können...
27.01.09:00
Teammeeting
Am 24.02. gibt’s ein ReleaseJack: Sie setzen Feature 1 um
Chloe: Sie implementieren Feature 2Wir setzen jetzt Jenkins ein...
07.02.09:00Büros
20.02.11:00Büro
git commit -m „...“ -agit commit -m „...“ -a
1..3ok 1ok 2ok 3
1..6ok 1ok 2ok 3ok 4ok 5ok 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://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
23.02.17:00Büro
git commit -m „...“ -agit commit -m „...“ -a
1..3ok 1ok 2ok 3
1..6ok 1ok 2ok 3ok 4ok 5ok 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 / stetig / regelmäßig● Nicht erst kurz vor Release
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
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
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
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, ...)
Jenkins / Hudson
● Intuitive Bedienung● REST-Schnittstelle● Flexibel / Erweiterbar● Verteilte Build-Vorgänge über mehrere Server● Open Source● Keine native Unterstützung für Perl
Installation Jenkins
● Gängige Linuxe: Über die Paketverwaltung● Windows: Installer von jenkins-ci.org
herunterladen und entpacken
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● Versch. Perl-Versionen● Versch. Datenbanken
Jenkins und Perl
● Keine native Unterstützung für Perl● Kann beliebige Tools aufrufen● Auf CPAN findet man alle notwendigen Sachen
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 (O'Reilly)● Continuous Integration mit Hudson (d.punkt
Verlag)