Wenn`s mal länger dauert

Werbung
Wenn’s mal länger dauert…
Continuous Integration
beschleunigen mit Hudson
Dr. Simon Wiest
Java User Group Cologne
05.10.2009, Köln
Agenda
Staffeln
Streichen
Einführung
Modularisieren
Parallelisieren
Über den Referenten: Dr. Simon Wiest
Privat: Hudson-Committer
Lokalisierung DE
Internationalisierung
Plug-In Entwickler
Support (Mailing Listen)
Beruflich: Hudson-Anwender
Projektleiter
Java Architekt
IT-Freiberufler
Coach
Was ist kontinuierliche Integration (CI)?
Was ist kontinuierliche Integration (CI)?
orchestriert durch CI-System
Was ist kontinuierliche Integration (CI)?
CI-System
Reports
Reporting
Check-Out
Developer
Repository
Build-System
Artefacts
QA
Check-In
ƒ
ƒ
ƒ
ƒ
ƒ
Subversion
CVS
Perforce
Git
…
ƒ
ƒ
ƒ
ƒ
ƒ
Ant
Maven
Shell-Skript
Batch-Datei
…
ƒ
ƒ
ƒ
ƒ
ƒ
JUnit
TestNG
CheckStyle
PMD
…
Archive
Hudson auf einen Blick
„ Java-basierte Web-Anwendung
„ Initiiert 2006/2007 von
Kohsuke Kawaguchi (Sun)
„ Teil des Projekts Glassfish
„ Open Source (MIT Lizenz)
„ 1,24 Mio. LOC (mit Plugins)
„ Zur Zeit 180+ Plug-Ins
„ 130+ Beitragende
Wer verwendet Hudson (und darf es zugeben)?
Quelle: Kohsuke Kawaguchi, wiki.hudson-ci.org//x/EYQ5Ag
Hudson: Ein Projekt in voller Fahrt.
Agenda
Staffeln
Streichen
Einführung
Modularisieren
Parallelisieren
Streichen: Was kann entfallen?
P1
P2
P3
P1
P2
P3
P4
vorher
nachher
Gewinn
Streichen: Beispiel
#1
C
#2
T
FIX
D
vorher
#1
C
nachher
#2
T
D
FIX
C
T
D
C
T
D
Streichen: Wie unterstützt hier Hudson?
„ Trends über Projektverlauf,
z.B. Buildzeit
UMLGraph deaktiviert
RAM erweitert
„ Intuitive Ad-Hoc-Analyse in
Web-Oberfläche
Agenda
Staffeln
Streichen
Einführung
Modularisieren
Parallelisieren
Staffeln: Das Wichtigste zuerst!
P1
P2
P1
P2
P3
P4
vorher
Gewinn
nachher
P3
P4
Staffeln: Beispiel
#1
C
#2
T
FIX
D
C
T
D
vorher
#2
#1
C
nachher
T
FIX
C
T
#1 SITE
D
Staffeln: Wie unterstützt hier Hudson?
„ Projektbeziehungen
(vor-/nachgelagerte Projekte)
„ Speicherung von
Fingerabdrücken
„ Nachvollziehbarkeit des
Buildprozesses über
verknüpfte Projekte hinweg
Agenda
Staffeln
Streichen
Einführung
Modularisieren
Parallelisieren
Die nächste Ebene: Wir betrachten Module statt Phasen.
Test 1
Compile
Check
Pack
Test 2
Abhängigkeiten
zwischen
(Build-)Phasen
Docs
APP
Abhängigkeiten
zwischen Modulen
CORE
GUI
DB
Modularisieren: Was lässt sich wiederverwenden?
#1
M1
M2
M3
M4
vorher
wiederverwenden
#2
M3*
nachher
neu bauen
Gewinn
Modularisieren: Das Projektlayout wird verändert.
prognosr-parent
vererbt
de
simonwiest
prognosr
cli
engine
model
prognosr
engine
model
prognosr-engine
prognosr-model
abhängig von
cli
prognosr-cli
Modularisieren: Beispiel
#1
Model
#2
Engine
CLI
CLI*
Model
Engine
CLI*
vorher
#1
Model
#2
Engine
CLI
CLI*
CLI*
nachher
Voraussetzung: Artefakte müssen archiviert werden, z.B. in Maven Repository.
Modularisieren: Wie unterstützt hier Hudson?
„ Direkte Unterstützung des
Maven-Modulkonzeptes
„ Verwendungsnachweis der
Build-Ergebnisse
„ Filterung der angezeigten
Projekte über reguläre
Ausdrücke in Ansichten
Agenda
Staffeln
Modularisieren
Parallelisieren
Streichen
Einführung
Parallelisieren: Was lässt sich gleichzeitig bauen?
M1
M2
M3
M4
M4
Gewinn
vorher
M1
M2
nachher
M3
Parallelisieren: Beispiel
Model
Engine
CLI
vorher
1
Model
Engine
nachher
1
Model
2
Engine
CLI
engine
model
CLI
abhängig von
cli
Parallelisieren: Verteilte Builds sind meist wirtschaftlicher.
Cloud
Master
Mac OS X
Linux
Windows
virtualisiert
lokale Builds
verteilte Builds
Parallelisieren: Wie unterstützt hier Hudson?
„ Master-/Slave-Architektur
„ Einfache Konfiguration von
Knoten
„ Automatischer Start/Stopp
von Slave-Knoten
„ Zusammenfasste Darstellung
der Ergebnisse verteilter
Builds
„ Breite Unterstützung von
Betriebssystemen und
Startmechanismen
Die vier Strategien zusammengefasst:
P2
P1
P1
P2
P3
X
P4
P1
P2
P1
P2
P3
P4
Streichen
P3
P3
Streichen
Staffeln
#1
M1
M2
M3
P4
M4
M1
M2
M3
M4
M1
#2
M3*
Modularisieren
M2
M4
M3
Parallelisieren
Agenda
Staffeln
Streichen
Einführung
Modularisieren
Parallelisieren
HERUNTERLADEN
EINSETZEN
WEITERSAGEN
MITMACHEN
hudson.dev.java.net
Vielen Dank fürs Zuhören.
Dr. Simon Wiest
Ingenieurbüro für Softwaretechnik
Wiesfleckenstrasse 13
72810 Gomaringen
www.simonwiest.de
Empfohlene Nachlese
„ Hudson
„ Projektseite. hudson.dev.java.net
„ JBoss Hudson CI Server. hudson.jboss.org/hudson
„ Interview mit Hudson-Initiator Kohsuke Kawaguchi
blogs.sun.com/glassfishpodcast (Episode #007)
„ Continuous Integration
„ White Paper von Martin Fowler. www.martinfowler.com
„ CI Feature Matrix. confluence.public.thoughtworks.org
„ P.M. Duvall: Continuous Integration. 2007.
„ Projektautomatisierung (allgemein)
„ M. Hüttermann: Agile Java-Entwicklung in der Praxis. 2007.
„ G. Popp: Konfigurationsmanagement mit SVN, Maven, Redmine. 2009.
„ J. F. Smart: Java Power Tools. 2008.
Wie funktionieren die Bären?
Mehr dazu im Hudson Wiki
wiki.hudson-ci.org//x/AQA1AQ
Hudson
Bären
HTTP/XML
CGI
Monitor-Skript
Netz
Steckdosenleiste
230 V
Herunterladen