Upload
others
View
17
Download
0
Embed Size (px)
Citation preview
Prof. Dr. Simon Wiest 34102 Informatik 1
Continuous Integrationmit Jenkins(Noch) fauler werdenin 10 Schritten
Prof. Dr. Simon WiestHochschule der Medien, Stuttgart
25.10.2012
Über den Referenten: Simon Wiest
Privat: Jenkins-Committer Beruflich: Jenkins-Anwender
Lokalisierung DE
InternationalisierungPlug-In Entwickler
Support & Evangelisierung
Java Architekt
Projektleiter
CI-Coach
Freiberufler,jetzt Professor
Was ist kontinuierliche Integration (CI)?
Subversion CVS Perforce Git …
Ant Maven Shell-Skript Batch-Datei …
JUnit Selenium CheckStyle PMD …
CI-System
Reporting
QARepository Build-System Archive
Check-Out
Check-In
Developer Artifacts
Reports
Jenkins auf einen Blick
Initiiert 2006 als Projekt „Hudson“ von Kohsuke Kawaguchi
Fortführung seit 2011 als Projekt „Jenkins“
Java-basierte Web-Anwendung
Open Source (MIT Lizenz)
Über 47.000 Installationen
Zur Zeit ca. 600 Plugins
400+ Beitragende
Wer verwendet Jenkins (und darf es zugeben)?
Quelle: wiki.jenkins-ci.org/pages/viewpage.action?pageId=58001258
Jenkins: Ein Projekt in voller Fahrt.
LOC [Mio.]
2,0
1,0
0,02006 2007 2008 2009 2010 2011 2012
2,5
1,5
0,5plugins
core
1. Installation: Denkbar einfach.
Winstone(Eingebettet)
JettyTomcatWebSphere
Download als WAR-Datei
Ca. 48 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
TestergebnisseEingebaut Ant Maven Shell Skript Windows Batch
Über Plug-Ins Gant, Groovy MSBuild, Nant Rake, Ruby und 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: Jenkins 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.6
JDK 1.7
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?
LOC [Mio.]
2,0
1,0
0,02006 2007 2008 2009 2010 2011 2012
2,5
1,5
0,5plugins
core
Über 600 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 600 Plugins erweitern den Core!
Core
Source Code Management
AccurevBazaarBitKeeperClearCaseCMVCCVS File System SCMGitHarvestMercurialPerforcePVCSSubversion SynergyTeam Foundation ServerTemplate ProjectURLVisual SourceSafe
Über 600 Plugins erweitern den Core!
Core
Source Code Management
Build-Mechanismen
AntBatch FileBuckminsterGantGradleGrailsGroovyKundoMavenMSBuildNantPowerShellRakeRubySConsSCTMExecutorShell scriptSelenium AESSeleniumhq(und weitere)
Über 600 Plugins erweitern den Core!
Core
Source Code Management
Berichte
Build-Mechanismen
CCCCCheckstyleCloverCoberturaCppUnitCrap4JDoxygenDRYEmmaFindBugsGallioGnatGrinderJapexJavadocJavaNCSS+JavaTest Rprt.JUnitMSTest
NCoverNUnitPlotPMD PluginPureCoverageRuby metricsSelenium AESSeleniumhqSerenitecSLOCCountTask ScannerTestability ExplorerViolationsWarningsWebTestPresenter
Über 600 Plugins erweitern den Core!
Core
Source Code Management
Benachrichtigungen Berichte
Build-Mechanismen
CampfireEmailGoogle CalendarhudsonTrackerIRCJabberNabaztagSameTimeStatus MonitorRSSTuxDroidTwitter
Über 600 Plugins erweitern den Core!
Core
Source Code Management
Verteilung vonArtefakten
Berichte
Build-Mechanismen
FTP PublisherSCPjava.net UploaderArtifactoryWebSphereLiveRebelCIFSAppaloosa
Benachrichtigungen
Über 600 Plugins erweitern den Core!
Core
Source Code Management
Integration mitDrittsystemen
Berichte
Build-Mechanismen
Benachrichtigungen
Verteilung vonArtefakten
Active DirectoryAmazon EC2Android AppAudit TrailBacklogBugzillaCluster mgmt.CrowdFirefox Add-onGithubGoogle Calend.Google CodeGoogle DesktopHGCAHadoopiPhone AppJIRAJava.netKagemai
LDAPMantisPXEPolarionRedmineRegEx EmailSFEESeleniumSonarSwarmTracWindows Tray
Über 600 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 600 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“
Prof. Dr. Simon Wiest 34102 Informatik 49
jenkins‐ci.orgDownloadsSource CodeIssue‐TrackerJenkins‐On‐JenkinsBlog
Prof. Dr. Simon WiestHochschule der Medien, Stuttgartwiest@hdm‐stuttgart.de
Wie funktionieren die Bären?
Jenkins
Monitor-Skript
Netz
Steckdosenleiste
Bären
CGI
HTTP/XML
230 V
Mehr dazu im Jenkins-Wiki http://wiki.jenkins-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
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