SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Downloaden Sie, um offline zu lesen
24
Ein Tag um die Welt zu retten
das Release fertig zu machen!
1    2
     1    3
          1         4
                    1    5
                         1    6
                              1    7
                                   1


8
1    9
     1    10
          1         11
                    1    12
                         1    13
                              1    14
                                   1


15   16   17        18   19   20   21
  HEUTE
22   23   24        25   26   27   28
          Release




29   30   31
1    2
     1    3
          1     4
                1    5
                     1    6
                          1    7
                               1


8
1    9
     1    10
          1     11
                1    12
                     1    13
                          1    14
                               1


15   16   17    18   19   20   21


22   23   24
          24    25   26   27   28
          Release!
29   30   31
09:00
arbeiten
16:40
testen
1..3
ok 1
ok 2
ok 3




       1..6
       ok 1
       ok 2
       ok 3
       ok 4
       ok 5
       ok 6
17:00
commit
git commit -m „...“ -a
git commit -m „...“ -a   git push origin master
git push origin master
00:00
Release
Installation Paket 1
Installation Paket 2
Update Datenbank
Installation Paket 3
Installation Paket 4
Rollback Paket 4
Installation Abhängigkeiten Paket 5
Installation Paket 5
Installation Paket 4
Live-Schalten
So nahm das Schicksal seinen Lauf...
27.01.
   09:00
Teammeeting
Am 24.02. gibt’s ein Release
  Jack: Sie setzen Feature 1 um
Chloe: Sie implementieren Feature 2
07.02.
09:00
Büros
20.02.
11:00
 Büro
git commit -m „...“ -a
git commit -m „...“ -a
1..3
ok 1
ok 2
ok 3




       1..6
       ok 1
       ok 2
       ok 3
       ok 4
       ok 5
       ok 6
23.02.
17:00
 Büro
git commit -m „...“ -a
git commit -m „...“ -a
1..3
ok 1
ok 2
ok 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:00
Teammeeting
Am 24.02. gibt’s ein Release
  Jack: Sie setzen Feature 1 um
Chloe: Sie implementieren Feature 2
   Wir setzen jetzt Jenkins ein...
07.02.
09:00
Büros
20.02.
11:00
 Büro
git commit -m „...“ -a
git commit -m „...“ -a
1..3
ok 1
ok 2
ok 3




       1..6
       ok 1
       ok 2
       ok 3
       ok 4
       ok 5
       ok 6
1..9
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
not ok 8
ok 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 ........................... ok
x2p/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 .............................. ok
Argument "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-^B0OM-^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 ............................. ok
Test 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-9
Files=2321, Tests=535200, 315 wallclock secs (107.60 usr 94.18 sys + 891.95 cusr 345.99 csys = 1439.72 CPU)
Result: FAIL
make: *** [test_harness] Error 1
Build step 'Execute shell' marked build as failure
23.02.
17:00
 Büro
git commit -m „...“ -a
git commit -m „...“ -a
1..3
ok 1
ok 2
ok 3




       1..6
       ok 1
       ok 2
       ok 3
       ok 4
       ok 5
       ok 6
Sie haben Post!
1..9
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 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)

Weitere ähnliche Inhalte

Andere mochten auch

MANUAL DO MESÁRIOS ELEIÇÕES 2016
MANUAL DO MESÁRIOS ELEIÇÕES 2016MANUAL DO MESÁRIOS ELEIÇÕES 2016
MANUAL DO MESÁRIOS ELEIÇÕES 2016
nessaassis
 
Epidemiologia de la
Epidemiologia de laEpidemiologia de la
Epidemiologia de la
Ktik Galindo
 
Samuel leyes de informatica
Samuel leyes de informaticaSamuel leyes de informatica
Samuel leyes de informatica
Jose Pulga
 
Wiki leaksKabel enthüllt Nato-Plan für einen Krieg gegen Russland
Wiki leaksKabel enthüllt Nato-Plan für einen Krieg gegen Russland Wiki leaksKabel enthüllt Nato-Plan für einen Krieg gegen Russland
Wiki leaksKabel enthüllt Nato-Plan für einen Krieg gegen Russland
Chemtrails Spoter
 
"Social Networks und Communityaufbau" mit Matias Roskos
"Social Networks und Communityaufbau" mit Matias Roskos"Social Networks und Communityaufbau" mit Matias Roskos
"Social Networks und Communityaufbau" mit Matias Roskos
Jens Arndt
 
La vía láctea contiene miles de millones de 2
La vía láctea contiene miles de millones de   2La vía láctea contiene miles de millones de   2
La vía láctea contiene miles de millones de 2
saferovna
 
Esports aquàtics
Esports aquàticsEsports aquàtics
Esports aquàtics
Marckuss14
 
QR Connect Mobile Websites A4
QR Connect Mobile Websites A4QR Connect Mobile Websites A4
QR Connect Mobile Websites A4
Alexander Lörcks
 
Nº0 magazine avintia racing
Nº0 magazine avintia racingNº0 magazine avintia racing
Nº0 magazine avintia racing
AvintiaRacing
 
12 a-g-al-pm-005 v1-funktionsdiagramme
12 a-g-al-pm-005 v1-funktionsdiagramme12 a-g-al-pm-005 v1-funktionsdiagramme
12 a-g-al-pm-005 v1-funktionsdiagramme
nedostizni
 
2 titular géneros
2 titular géneros2 titular géneros
2 titular géneros
RPMI Ues
 
Pflanzliche arzneimittel
Pflanzliche arzneimittelPflanzliche arzneimittel
Pflanzliche arzneimittel
simonjohn2
 

Andere mochten auch (20)

Das Joomla!-SEO-Einmaleins ...reloaded!
Das Joomla!-SEO-Einmaleins  ...reloaded!Das Joomla!-SEO-Einmaleins  ...reloaded!
Das Joomla!-SEO-Einmaleins ...reloaded!
 
MANUAL DO MESÁRIOS ELEIÇÕES 2016
MANUAL DO MESÁRIOS ELEIÇÕES 2016MANUAL DO MESÁRIOS ELEIÇÕES 2016
MANUAL DO MESÁRIOS ELEIÇÕES 2016
 
Epidemiologia de la
Epidemiologia de laEpidemiologia de la
Epidemiologia de la
 
Samuel leyes de informatica
Samuel leyes de informaticaSamuel leyes de informatica
Samuel leyes de informatica
 
Slideshare1
Slideshare1Slideshare1
Slideshare1
 
Just red apples
Just red applesJust red apples
Just red apples
 
2 parcial
2 parcial2 parcial
2 parcial
 
Wiki leaksKabel enthüllt Nato-Plan für einen Krieg gegen Russland
Wiki leaksKabel enthüllt Nato-Plan für einen Krieg gegen Russland Wiki leaksKabel enthüllt Nato-Plan für einen Krieg gegen Russland
Wiki leaksKabel enthüllt Nato-Plan für einen Krieg gegen Russland
 
Presentacion personal
Presentacion personalPresentacion personal
Presentacion personal
 
"Social Networks und Communityaufbau" mit Matias Roskos
"Social Networks und Communityaufbau" mit Matias Roskos"Social Networks und Communityaufbau" mit Matias Roskos
"Social Networks und Communityaufbau" mit Matias Roskos
 
Presentacion numero 2
Presentacion numero 2Presentacion numero 2
Presentacion numero 2
 
Social Media Monitoring
Social Media MonitoringSocial Media Monitoring
Social Media Monitoring
 
La vía láctea contiene miles de millones de 2
La vía láctea contiene miles de millones de   2La vía láctea contiene miles de millones de   2
La vía láctea contiene miles de millones de 2
 
Esports aquàtics
Esports aquàticsEsports aquàtics
Esports aquàtics
 
QR Connect Mobile Websites A4
QR Connect Mobile Websites A4QR Connect Mobile Websites A4
QR Connect Mobile Websites A4
 
Nº0 magazine avintia racing
Nº0 magazine avintia racingNº0 magazine avintia racing
Nº0 magazine avintia racing
 
12 a-g-al-pm-005 v1-funktionsdiagramme
12 a-g-al-pm-005 v1-funktionsdiagramme12 a-g-al-pm-005 v1-funktionsdiagramme
12 a-g-al-pm-005 v1-funktionsdiagramme
 
2 titular géneros
2 titular géneros2 titular géneros
2 titular géneros
 
Pflanzliche arzneimittel
Pflanzliche arzneimittelPflanzliche arzneimittel
Pflanzliche arzneimittel
 
Normas especificas basica_me
Normas especificas basica_meNormas especificas basica_me
Normas especificas basica_me
 

Ähnlich wie Jenkins und Perl-Projekte

EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
René Winkelmeyer
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!
Tobias Schneck
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
inovex GmbH
 

Ähnlich wie Jenkins und Perl-Projekte (20)

JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
 
2008 02 01 Zeller
2008 02 01 Zeller2008 02 01 Zeller
2008 02 01 Zeller
 
Mercurial
MercurialMercurial
Mercurial
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
MySQL Security SLAC 2015
MySQL Security SLAC 2015MySQL Security SLAC 2015
MySQL Security SLAC 2015
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
DNUG ak-anwendungsentwicklung.18042011
DNUG ak-anwendungsentwicklung.18042011DNUG ak-anwendungsentwicklung.18042011
DNUG ak-anwendungsentwicklung.18042011
 
OSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas Gelf
OSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas GelfOSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas Gelf
OSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas Gelf
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei Technosoft
 
OSMC 2015: OMD 5 Jahre Best Practice mit Matthias Gallinger
OSMC 2015: OMD 5 Jahre Best Practice mit Matthias GallingerOSMC 2015: OMD 5 Jahre Best Practice mit Matthias Gallinger
OSMC 2015: OMD 5 Jahre Best Practice mit Matthias Gallinger
 
OSMC 2015 | OMD - 5 Jahre Best Practice by Matthias Gallinger
OSMC 2015 | OMD - 5 Jahre Best Practice by Matthias GallingerOSMC 2015 | OMD - 5 Jahre Best Practice by Matthias Gallinger
OSMC 2015 | OMD - 5 Jahre Best Practice by Matthias Gallinger
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
GPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der PraxisGPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der Praxis
 

Mehr von Renee Baecker (10)

2012 gpw yapc2012
2012 gpw yapc20122012 gpw yapc2012
2012 gpw yapc2012
 
Perl5 Maintenance Fund
Perl5 Maintenance FundPerl5 Maintenance Fund
Perl5 Maintenance Fund
 
OPAR
OPAROPAR
OPAR
 
OPAR Vortrag auf der CeBIT 2011
OPAR Vortrag auf der CeBIT 2011OPAR Vortrag auf der CeBIT 2011
OPAR Vortrag auf der CeBIT 2011
 
Clt 2011 Perl Critic
Clt 2011 Perl CriticClt 2011 Perl Critic
Clt 2011 Perl Critic
 
Froscamp2010_perlcritic
Froscamp2010_perlcriticFroscamp2010_perlcritic
Froscamp2010_perlcritic
 
Froscamp2010_padre
Froscamp2010_padreFroscamp2010_padre
Froscamp2010_padre
 
Froscamp2010_moose
Froscamp2010_mooseFroscamp2010_moose
Froscamp2010_moose
 
Fr os con2010_bmatrainer
Fr os con2010_bmatrainerFr os con2010_bmatrainer
Fr os con2010_bmatrainer
 
Fr os con2010_devel_nytprof
Fr os con2010_devel_nytprofFr os con2010_devel_nytprof
Fr os con2010_devel_nytprof
 

Jenkins und Perl-Projekte

  • 1. 24
  • 2. Ein Tag um die Welt zu retten das Release fertig zu machen!
  • 3. 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 16 17 18 19 20 21 HEUTE 22 23 24 25 26 27 28 Release 29 30 31
  • 4. 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 16 17 18 19 20 21 22 23 24 24 25 26 27 28 Release! 29 30 31
  • 6.
  • 8. 1..3 ok 1 ok 2 ok 3 1..6 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6
  • 10. git commit -m „...“ -a git commit -m „...“ -a git push origin master git push origin master
  • 12. Installation Paket 1 Installation Paket 2 Update Datenbank Installation Paket 3 Installation Paket 4 Rollback Paket 4 Installation Abhängigkeiten Paket 5 Installation Paket 5 Installation Paket 4 Live-Schalten
  • 13.
  • 14. So nahm das Schicksal seinen Lauf...
  • 15. 27.01. 09:00 Teammeeting
  • 16. Am 24.02. gibt’s ein Release Jack: Sie setzen Feature 1 um Chloe: Sie implementieren Feature 2
  • 18.
  • 20. git commit -m „...“ -a git commit -m „...“ -a
  • 21. 1..3 ok 1 ok 2 ok 3 1..6 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6
  • 23. git commit -m „...“ -a git commit -m „...“ -a
  • 24. 1..3 ok 1 ok 2 ok 3 1..6 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6
  • 25. Wie es hätte laufen können...
  • 26. 27.01. 09:00 Teammeeting
  • 27. Am 24.02. gibt’s ein Release Jack: Sie setzen Feature 1 um Chloe: Sie implementieren Feature 2 Wir setzen jetzt Jenkins ein...
  • 29.
  • 31. git commit -m „...“ -a git commit -m „...“ -a
  • 32. 1..3 ok 1 ok 2 ok 3 1..6 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6
  • 33. 1..9 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 not ok 8 ok 9
  • 35. 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 ........................... ok x2p/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 .............................. ok Argument "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-^B0OM-^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 ............................. ok Test 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-9 Files=2321, Tests=535200, 315 wallclock secs (107.60 usr 94.18 sys + 891.95 cusr 345.99 csys = 1439.72 CPU) Result: FAIL make: *** [test_harness] Error 1 Build step 'Execute shell' marked build as failure
  • 37. git commit -m „...“ -a git commit -m „...“ -a
  • 38. 1..3 ok 1 ok 2 ok 3 1..6 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6
  • 40. 1..9 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9
  • 41. Jenkins build is back to normal : perl5 #861
  • 42. Continuous Integration ● Integration ● Zusammenfügen von Programmkomponenten ● Continuous ● Kontinuierlich / stetig / regelmäßig ● Nicht erst kurz vor Release
  • 43. 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
  • 44. 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
  • 45. 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
  • 46. 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, ...)
  • 47. Jenkins / Hudson ● Intuitive Bedienung ● REST-Schnittstelle ● Flexibel / Erweiterbar ● Verteilte Build-Vorgänge über mehrere Server ● Open Source ● Keine native Unterstützung für Perl
  • 48. Installation Jenkins ● Gängige Linuxe: Über die Paketverwaltung ● Windows: Installer von jenkins-ci.org herunterladen und entpacken
  • 49. Konfiguration ● Sehr fein einstellbar, hier aber nicht Thema ● Benutzverwaltung ● Apache-Anbindung ● SMTP-Anbindung
  • 50. Arten von Projekten ● Maven 2/3 ● Externen Job überwachen ● Multikonfigurationsprojekt ● FreeStyle
  • 51. Multikonfigurationsprojekte ● Sehr flexibel konfigurierbar ● Praktisch für Tests verschiedener Konfigurationen ● Versch. Perl-Versionen ● Versch. Datenbanken
  • 52. Jenkins und Perl ● Keine native Unterstützung für Perl ● Kann beliebige Tools aufrufen ● Auf CPAN findet man alle notwendigen Sachen
  • 53. FreeStyle Projekte ● Für Perl-Projekte die richtige Wahl ● Frei konfigurierbar
  • 61. Builds laufen lassen ● Manuell ● Periodisch ● Durch commit
  • 66. Mehr CI für Perl ● Travis-CI (travis-ci.org) ● Jitterbug ● Hudson/Jenkins ● Test::Continuous
  • 67. Literatur ● $foo – Perl-Magazin Nr. 21 (01/2012) ● Jenkins – kurz & gut (O'Reilly) ● Continuous Integration mit Hudson (d.punkt Verlag)