46
Continuous Integration mit Hudson Dr. Simon Wiest www.simonwiest.de Java User Group Switzerland 26.04.2010, Technopark Zürich

Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Embed Size (px)

Citation preview

Page 1: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Continuous Integrationmit Hudson

Dr. Simon Wiestwww.simonwiest.de

Java User Group Switzerland26.04.2010, Technopark Zürich

Page 2: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):
Page 3: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):
Page 4: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):
Page 5: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):
Page 6: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):
Page 7: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):
Page 8: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):
Page 9: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Gestatten, Hudson.

Page 10: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Agenda

Überblick

10 Schritte

Page 11: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Über den Referenten: Dr. Simon Wiest

Privat: Hudson-Committer Beruflich: Hudson-Anwender

Lokalisierung DE

InternationalisierungPlug-In Entwickler

Support & Evangelisierung

Java Architekt

Projektleiter

CI-Coach

IT-Freiberufler

Page 12: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Was ist kontinuierliche Integration (CI)?

Page 13: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Was ist kontinuierliche Integration (CI)?orchestriert durch CI-System

Page 14: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Was ist kontinuierliche Integration (CI)?

SubversionCVSPerforceGit…

AntMavenShell-SkriptBatch-Datei…

JUnitTestNGCheckStylePMD…

CI-System

Reporting

QARepositoryBuild-

SystemArchive

Check-Out

Check-In

Developer Artefacts

Reports

Page 15: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

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 200+ Plug-Ins

180+ Beitragende

Page 16: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Wer verwendet Hudson (und darf es zugeben)?

Quelle: Kohsuke Kawaguchi, wiki.hudson-ci.org//x/EYQ5Ag

Page 17: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Hudson: Ein Projekt in voller Fahrt.

Page 18: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Agenda

Überblick

10 Schritte

Page 19: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

1. Installation: Denkbar einfach.

Winstone(Eingebettet)

JettyTomcatWebSphere

Download als WAR-Datei

Ca. 26 MB

Page 20: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

2. Konfiguration: Komfortabel und übersichtlich.

Wann immer möglich, werden Konventionen oder sinnvolle Vorgabewerte verwendet.

Web-Interface XML-Konfigurationsdateien

Page 21: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

3. Build-Systeme: Java – und darüber hinaus!

Primär-Artefakt

Dokumentation

TestergebnisseEingebautAntMavenShell SkriptWindows Batch

Über Plug-InsGant, GroovyMSBuild, NantRake, Rubyund viele mehr!

Page 22: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

4. Berichten: Grenzenlos durch Plugins.

Eingebaut

JUnit

TestNG

Über Plug-Ins

CheckStyle

PMD

FindBugs

Simian

u.v.m.

Page 23: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

5. Source Code Repositories: Mehr als nur „Auschecken“.

Repository

HudsonRepository

Browser

Page 24: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

6. Benachrichtigungen: Viele Kanäle stehen offen.

E-Mail

RSS-Feeds

Instant Messenger

Twitter

Plugins für IDEs & Browser

Desktop-Gadgets

Page 25: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

7. Remote API: Hudson lässt sich einfach automatisieren.

Hudson

Jobs importierenStatus anzeigen

HTMLHTML,

XML, JSON

HTML, CLI

Photos (von links): Simon Wiest, Daniel Lindner, violet.net, Hartmut Lang

Page 26: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

8. Abhängigkeiten zwischen Jobs: Intelligentes Bauen.

Abhängigkeiten zwischen Komponenten

Abhängigkeiten zwischenBuild-Schritten

CORE GUI DB

APP

Compile Check

Test 2

Test 1

Docs

Pack

Page 27: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

9. Matrix-Builds: Hudson übernimmt die Fleißarbeit.

LinuxWindows

Achse „Betriebssystem“

JDK 1.5

JDK 1.6

Achse„JDK“

Page 28: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Cloud

10.Verteilte Builds: Skalierbare Leistung mit OS-Vielfalt.

Master

lokale Builds verteilte Builds

virtualisiert

LinuxMac OS X Windows

Page 29: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Zusammenfassung: Alle 10 Schritte auf einen Blick

Installation

Konfiguration

Build-Support

Berichte

SCM-Integration

Kommunikation

Remote-API/CLI

Abhängige Jobs

Matrix-Builds

Verteilte Builds

Page 30: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Haben wir da nicht etwas vergessen?

Bisher hauptsächlichcore-Features gezeigt!

Page 31: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Über 200 Plugins erweitern den Core!

Update-Center für einfache Installation und Aktualisierung

1–2 neue Plugins pro Woche(!)

Maven-Tools für Plugin-Entwicklung

Gute Unterstützung durch Developer-Mailingliste

Core

Plugins

Page 32: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Über 180 Plugins erweitern den Core!

Core

Source Code Management

AccurevBazaarBitKeeperClearCaseCMVCCVS File System SCMGitHarvestMercurialPerforcePVCSSubversion SynergyTeam Foundation ServerTemplate ProjectURLVisual SourceSafe

Page 33: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Über 180 Plugins erweitern den Core!

Core

Source Code Management

Build-Mechanismen

AntBatch FileBuckminsterGantGradleGrailsGroovyKundoMavenMSBuildNantPowerShellRakeRubySConsSCTMExecutorShell scriptSelenium AESSeleniumhq(und weitere)

Page 34: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Über 180 Plugins erweitern den Core!

Core

Source Code Management

Berichte

Build-Mechanismen

CCCCCheckstyleCloverCoberturaCppUnitCrap4JDoxygenDRYEmmaFindBugsGallioGnatGrinderJapexJavadocJavaNCSS+JavaTest Rprt.JUnitMSTest

NCoverNUnitPlotPMD PluginPureCoverageRuby metricsSelenium AESSeleniumhqSerenitecSLOCCountTask ScannerTestability ExplorerViolationsWarningsWebTestPresenter

Page 35: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Über 180 Plugins erweitern den Core!

Core

Source Code Management

Benachrichtigungen Berichte

Build-Mechanismen

CampfireEmailGoogle CalendarhudsonTrackerIRCJabberNabaztagSameTimeStatus MonitorRSSTuxDroidTwitter

Page 36: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Über 180 Plugins erweitern den Core!

Core

Source Code Management

Verteilung vonArtefakten

Berichte

Build-Mechanismen

FTP Publisherjava.net UploaderSCPSFEESVN

Benachrichtigungen

Page 37: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Über 180 Plugins erweitern den Core!

Core

Source Code Management

Integration mitDrittsystemen

Berichte

Build-Mechanismen

Benachrichtigungen

Verteilung vonArtefakten

Active DirectoryAndroid AppAudit TrailBacklogBugzillaCluster mgmt.CrowdFirefox Add-onGithubGoogle Calend.Google CodeGoogle DesktopHGCAHadoopiPhone AppJIRAJava.netKagemaiLDAP Email

MantisPXEPolarionRedmineRegEx EmailSFEESeleniumSonarSwarmTracWindows Tray

Page 38: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Über 180 Plugins erweitern den Core!

Core

Source Code Management

„Build Wrapper“

Berichte

Build-Mechanismen

Hudson Central. Job(Re)Action Hudson Distr. Workspace CleanLocks and LatchesM2 Extra StepsM2 ReleaseReleaseTemplate ProjectVMwareXvncZenTimestamp

Benachrichtigungen

Integration mitDrittsystemen Verteilung von

Artefakten

Page 39: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Über 180 Plugins erweitern den Core!

Core

Source Code Management

Berichte

Build-Mechanismen

Nützliches& Schräges

Build-timeoutChange Log HistoryClaimConfiguration SlicingCygpathEmotional HudsonGoogle AnalyticsGreen BallsJBPMLocalePort AllocatorPromoted BuildsRadiator ViewRetry Failed BuildsSectioned ViewSidebar-LinkSlave-statusContinuous Integration Game

Benachrichtigungen

Integration mitDrittsystemen Verteilung von

Artefakten

„Build Wrapper“

Page 40: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Plugin „Continuous Integration Game“

Page 41: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Agenda

Überblick

10 Schritte

Page 42: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

HERUNTERLADEN

Page 43: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

EINSETZEN

Page 44: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

WEITERSAGEN

Page 45: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

MITMACHEN

Page 46: Continuous Integration mit Hudson - Java User Group ... · Java Architekt Projektleiter CI-Coach IT-Freiberufler. Was ist kontinuierliche Integration (CI)? ... Photos (von links):

Dr. Wiest – Ingenieurbüro für Softwaretechnikwww.simonwiest.de

Beratung

hudson-ci.org

BuchVortragKostenlose Vor-Ort

EinführungsvorträgeSprechen Sie mich an!

„CI mit Hudson“dpunkt.verlag Herbst 2010

Individuelle Beratung zu Buildmanagement, Werkzeug-Evaluation

Und wenn Sie Lust auf mehr haben…