Post on 17-Sep-2018
transcript
Continuous Integrationmit Hudson(Noch) fauler in 10 Schritten
Dr. Simon Wiestwww.simonwiest.de
JUG Switzerland22.02.2011, Bern
Jenkins
Über den Referenten: Dr. Simon Wiest
Privat: Jenkins-Committer Beruflich: Jenkins-Anwender
Lokalisierung DE
InternationalisierungPlug-In Entwickler
Support & Evangelisierung
Java Architekt
Projektleiter
CI-Coach
IT-Freiberufler
Was ist kontinuierliche Integration (CI)?
SubversionCVSPerforceGit…
AntMavenShell-SkriptBatch-Datei…
JUnitTestNGCheckStylePMD…
CI-System
Reporting
QARepositoryBuild-
SystemArchive
Check-Out
Check-In
Developer Artefacts
Reports
Jenkins auf einen Blick
Java-basierte Web-Anwendung
Initiiert 2006/2007 als „Hudson“ von K. Kawaguchi
Fortführung seit 2011 als Projekt „Jenkins“
Open Source (MIT Lizenz)
1,24 Mio. LOC (mit Plugins)
Zur Zeit ca. 300 Plug-Ins
200+ Beitragende
Wer verwendet Hudson/Jenkins (und darf es zugeben)?
Quelle: Kohsuke Kawaguchi, wiki.hudson-ci.org//x/EYQ5Ag
1. Installation: Denkbar einfach.
Winstone(Eingebettet)
JettyTomcatWebSphere
Download als WAR-Datei
Ca. 35 MB
2. Konfiguration: Komfortabel und übersichtlich.
Wann immer möglich, werden Konventionen oder sinnvolle Vorgabewerte verwendet.
Web-Interface XML-Konfigurationsdateien
3. Build-Systeme: Java – und darüber hinaus!
Primär-Artefakt
Dokumentation
TestergebnisseEingebautAntMavenShell SkriptWindows Batch
Über Plug-InsGant, GroovyMSBuild, NantRake, Rubyund viele mehr!
4. Berichten: Grenzenlos durch Plugins.
Eingebaut
JUnit
TestNG
Über Plug-Ins
CheckStyle
PMD
FindBugs
Simian
u.v.m.
6. Benachrichtigungen: Viele Kanäle stehen offen.
RSS-Feeds
Instant Messenger
Plugins für IDEs & Browser
Desktop-Gadgets
7. Remote API: Hudson lässt sich einfach automatisieren.
Jenkins
Jobs importierenStatus anzeigen
HTMLHTML,
XML, JSON
HTML, CLI
Photos (von links): Simon Wiest, Daniel Lindner, violet.net, Hartmut Lang
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
9. Matrix-Builds: Jenkins übernimmt die Fleißarbeit.
LinuxWindows
Achse „Betriebssystem“
JDK 1.5
JDK 1.6
Achse„JDK“
Cloud
10.Verteilte Builds: Skalierbare Leistung mit OS-Vielfalt.
Master
lokale Builds verteilte Builds
virtualisiert
LinuxMac OS X Windows
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
Haben wir da nicht etwas vergessen?
Bisher hauptsächlichcore-Features gezeigt!
2006 2007 2008 2009 2010
Über 300 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
Über 300 Plugins erweitern den Core!
Core
Source Code Management
AccurevBazaarBitKeeperClearCaseCMVCCVS File System SCMGitHarvestMercurialPerforcePVCSSubversion SynergyTeam Foundation ServerTemplate ProjectURLVisual SourceSafe
Über 300 Plugins erweitern den Core!
Core
Source Code Management
Build-Mechanismen
AntBatch FileBuckminsterGantGradleGrailsGroovyKundoMavenMSBuildNantPowerShellRakeRubySConsSCTMExecutorShell scriptSelenium AESSeleniumhq(und weitere)
Über 300 Plugins erweitern den Core!
Core
Source Code Management
Berichte
Build-Mechanismen
CCCCCheckstyleCloverCoberturaCppUnitCrap4JDoxygenDRYEmmaFindBugsGallioGnatGrinderJapexJavadocJavaNCSS+JavaTest Rprt.JUnitMSTest
NCoverNUnitPlotPMD PluginPureCoverageRuby metricsSelenium AESSeleniumhqSerenitecSLOCCountTask ScannerTestability ExplorerViolationsWarningsWebTestPresenter
Über 300 Plugins erweitern den Core!
Core
Source Code Management
Benachrichtigungen Berichte
Build-Mechanismen
CampfireEmailGoogle CalendarhudsonTrackerIRCJabberNabaztagSameTimeStatus MonitorRSSTuxDroidTwitter
Über 300 Plugins erweitern den Core!
Core
Source Code Management
Verteilung vonArtefakten
Berichte
Build-Mechanismen
FTP Publisherjava.net UploaderSCPSFEESVN
Benachrichtigungen
Über 300 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
Über 300 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
Über 300 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“
Dr. Wiest – Ingenieurbüro für Softwaretechnik
simon.wiest@simonwiest.dewww.simonwiest.de
jenkins-ci.org
BuchVortrag
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
Wie funktionieren die Bären?
last.fm, London/UK
Ingenieurbüro Dr. Wiest Gomaringen
Netzgiganten GmbH Stuttgart
cedarsoft GmbH Gomaringen
Bonus-Folie: Hardware aufrüsten lohnt.
CPU
Quelle: „Schneide Blog“ der Softwareschneiderei GmbH, http://schneide.wordpress.com
Hauptspeicher
NetzwerkFestplatte
4 Strategien für schnellere Builds
Parallelisieren
M2 M3 M4M1
M1
M2
M3
M4
Staffeln
StreichenP2 P3
P1 P2
P3
P4P1
P4
Modularisieren
M2 M3 M4M1
M3*
#1
#2
P2 P3
P1 P2 P3
P4P1 XStreichen
Cloud: Verteilung, Virtualisierung und Rechenzeit auf Abruf
Verteilung Virtualisierung
Rechenzeit auf Abruf
Cloud
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