Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch)...

53
Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest www.simonwiest.de majug² Java User Group Mannheim 27.01.2010, Mannheim

Transcript of Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch)...

Page 1: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Continuous Integrationmit Hudson(Noch) fauler werden in 10 Schritten

Dr. Simon Wiestwww.simonwiest.de

majug² Java User Group Mannheim 27.01.2010, Mannheim

Page 2: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,
Page 3: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,
Page 4: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,
Page 5: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,
Page 6: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,
Page 7: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,
Page 8: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,
Page 9: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Gestatten, Hudson.

Page 10: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Agenda

Überblick

10 Schritte

Page 11: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Über den Referenten: Dr. Simon Wiest

Privat: Hudson-Committer Beruflich: Hudson-Anwender

Lokalisierung DE

InternationalisierungPlug-In Entwickler

Support & Evangelisierung

Java Architekt

Projektleiter

Coach

IT-Freiberufler

Page 12: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Was ist kontinuierliche Integration (CI)?

Page 13: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

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

Page 14: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Was ist kontinuierliche Integration (CI)?

SubversionCVSPerforceGit…

AntMavenShell-SkriptBatch-Datei…

JUnitTestNGCheckStylePMD…

CI-System

Reporting

QARepository Build-System Archive

Check-Out

Check-In

Developer Artefacts

Reports

Page 15: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Wer verwendet Hudson (und darf es zugeben)?

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

Page 17: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Hudson: Ein Projekt in voller Fahrt.

Page 18: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Agenda

Überblick

10 Schritte

Page 19: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

1. Installation: Denkbar einfach.

Winstone(Eingebettet)

JettyTomcatWebSphere

Download als WAR-Datei

Ca. 26 MB

Page 20: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

4. Berichten: Grenzenlos durch Plugins.

Eingebaut

JUnit

TestNG

Über Plug-Ins

CheckStyle

PMD

FindBugs

Simian

u.v.m.

Page 23: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

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

Repository

HudsonRepository

Browser

Page 24: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Haben wir da nicht etwas vergessen?

Bisher hauptsächlichcore-Features gezeigt!

Page 31: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Ü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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Über 200 Plugins erweitern den Core!

Core

Source Code Management

AccurevBazaarBitKeeperClearCaseCMVCCVS File System SCMGitHarvestMercurialPerforcePVCSSubversion SynergyTeam Foundation ServerTemplate ProjectURLVisual SourceSafe

Page 33: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Über 200 Plugins erweitern den Core!

Core

Source Code Management

Build-Mechanismen

AntBatch FileBuckminsterGantGradleGrailsGroovyKundoMavenMSBuildNantPowerShellRakeRubySConsSCTMExecutorShell scriptSelenium AESSeleniumhq(und weitere)

Page 34: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Über 200 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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Über 200 Plugins erweitern den Core!

Core

Source Code Management

Benachrichtigungen Berichte

Build-Mechanismen

CampfireEmailGoogle CalendarhudsonTrackerIRCJabberNabaztagSameTimeStatus MonitorRSSTuxDroidTwitter

Page 36: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Über 200 Plugins erweitern den Core!

Core

Source Code Management

Verteilung vonArtefakten

Berichte

Build-Mechanismen

FTP Publisherjava.net UploaderSCPSFEESVN

Benachrichtigungen

Page 37: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Über 200 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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Über 200 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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Über 200 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 - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Plugin „Continuous Integration Game“

Page 41: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Agenda

Überblick

10 Schritte

Page 42: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

HERUNTERLADEN

Page 43: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

EINSETZEN

Page 44: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

WEITERSAGEN

Page 45: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

MITMACHEN

Page 46: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Dr. Wiest – Ingenieurbüro für SoftwaretechnikWiesfleckenstrasse 1372810 Gomaringen

www.simonwiest.de

Beratung

hudson-ci.org

Buch Vortrag

Page 47: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,
Page 48: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Empfohlene Nachlese

HudsonProjektseite. hudson.dev.java.netJBoss Hudson CI Server. hudson.jboss.org/hudsonInterview mit Hudson-Initiator Kohsuke Kawaguchiblogs.sun.com/glassfishpodcast (Episode #007)

Continuous IntegrationWhite Paper von Martin Fowler. www.martinfowler.comCI Feature Matrix. confluence.public.thoughtworks.orgP.M. Duvall: Continuous Integration. 2007.

Projektautomatisierung (allgemein)J. F. Smart: Java Power Tools. 2008.M. Hüttermann: Agile Java-Entwicklung in der Praxis. 2007.

Page 49: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Wie funktionieren die Bären?

Hudson

Monitor-Skript

Netz

Steckdosenleiste

Bären

CGI

HTTP/XML

230 V

Mehr dazu im Hudson Wiki wiki.hudson-ci.org//x/AQA1AQ

Page 50: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Wie funktionieren die Bären?

last.fm, London/UK

Ingenieurbüro Dr. Wiest, Gomaringen

Netzgiganten GmbH, Stuttgart

Page 51: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

Bonus-Folie: Hardware aufrüsten lohnt.

CPU

Quelle: „Schneide Blog“ der Softwareschneiderei GmbH, http://schneide.wordpress.com

Hauptspeicher

NetzwerkFestplatte

Page 52: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

The Joel (Spolsky) Test

1. Do you use source control? 2. Can you make a build in one step? 3. Do you make daily builds? 4. Do you have a bug database? 5. Do you fix bugs before writing new code? 6. Do you have an up-to-date schedule? 7. Do you have a spec? 8. Do programmers have quiet working conditions? 9. Do you use the best tools money can buy? 10. Do you have testers? 11. Do new candidates write code during their interview? 12. Do you do hallway usability testing?

www.joelonsoftware.com, Aug. 2000

Page 53: Continuous Integration mit Hudson - simonwiest.de · Continuous Integration mit Hudson (Noch) fauler werden in 10 Schritten Dr. Simon Wiest majug² Java User Group Mannheim 27.01.2010,

www.rockstardemos.de