Prof. Dr. Simon Wiest 34102 Informatik 1
Continuous Integrationim Umfeld Agiler Software‐Entwicklung
Prof. Dr. Simon Wiest
3. NOSER Technologie‐Impulse 201327.09.2013 | München| D
Über den Referenten: Simon Wiest
Privat: Jenkins-Committer Beruflich: Jenkins-Anwender
Lokalisierung DE
InternationalisierungPlug-In Entwickler
Support & Evangelisierung
Java Architekt
Projektleiter
CI-Coach
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“ durch Kohsuke Kawaguchi
Fortführung seit 2011 als Projekt „Jenkins“
Java-basierte Web-Anwendung
Open Source (MIT Lizenz)
Weit über 50.000 Installationen
Zur Zeit ca. 800 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,0
2,5
1,5
0,5plugins
core
2006 2007 2008 2009 2010 2011 2012 2013
Schritt 1: Automatisieren Sie Ihren Build.
Primär-Artefakt
Dokumentation
TestergebnisseEingebaut Ant Maven Shell Skript Windows Batch
Über Plug-Ins Gant, Groovy MSBuild, Nant Rake, Ruby und viele mehr!
Schritt 2: Erzeugen Sie Ihre Berichte automatisch.
Eingebaut
JUnit
TestNG
Über Plug-Ins
CheckStyle
PMD
FindBugs
Simian
u.v.m.
Schritt 3: Sorgen Sie für Benachrichtigungen.
RSS-Feeds
Instant Messenger
Plugins für IDEs & Browser
Apps für Smartphones
Schritt 4: Binden Sie Ihre Drittsysteme an.
Jenkins
Jobs importierenStatus anzeigen
HTMLHTML,
XML, JSON
HTML, CLI
Photos (von links): Simon Wiest, Daniel Lindner, violet.net, Hartmut Lang
Schritt 5: Modularisieren Sie Ihre Projekte.
Abhängigkeiten zwischen Komponenten
Abhängigkeiten zwischenBuild-Schritten
CORE GUI DB
APP
Compile Check
Test 2
Test 1
Docs
Pack
Schritt 6: Bauen Sie Varianten regelbasiert.
LinuxWindows
Achse „Betriebssystem“
JDK 1.6
JDK 1.7
Achse„JDK“
Cloud
Schritt 7: Verteilen und parallelisieren Sie Ihre Builds.
Master
lokale Builds verteilte Builds
virtualisiert
LinuxMac OS X Windows
One more thing…
LOC [Mio.]
2,0
1,0
0,0
2,5
1,5
0,5plugins
core
2006 2007 2008 2009 2010 2011 2012 2013
Über 800 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 800 Plugins erweitern den Core!
Core
Source Code Management
AccurevBazaarBitKeeperClearCaseCMVCCVS DimensionsFile System SCMGitHarvestMercurialPerforcePVCSSubversion SynergyTeam Foundation ServerTemplate ProjectURLVisual SourceSafeu.v.m.
Über 800 Plugins erweitern den Core!
Core
Source Code Management
Build-Mechanismen
AntBatch FileBuckminsterGantGradleGrailsGroovyKundoMavenMSBuildNantPowerShellRakeRubySConsSCTMExecutorShell scriptSelenium AESSeleniumhqu.v.m.
Über 800 Plugins erweitern den Core!
Core
Source Code Management
Berichte
Build-Mechanismen
CCCCCheckstyleCloverCoberturaCppUnitCrap4JDoxygenDRYEmmaFindBugsGallioGnatGrinderJapexJavadocJavaNCSS+JavaTest Rprt.JUnitMSTest
NCoverNUnitPlotPMD PluginPureCoverageRuby metricsSelenium AESSeleniumhqSerenitecSLOCCountTask ScannerTestability ExplorerViolationsWarningsWebTestPresenteru.v.m.
Über 800 Plugins erweitern den Core!
Core
Source Code Management
Benachrichtigungen Berichte
Build-Mechanismen
CampfireEmailGoogle CalendarhudsonTrackerIRCJabberNabaztagSameTimeStatus MonitorRSSTuxDroidTwitteru.v.m.
Über 800 Plugins erweitern den Core!
Core
Source Code Management
Verteilung vonArtefakten
Berichte
Build-Mechanismen
FTP PublisherSCPjava.net UploaderArtifactoryWebSphereLiveRebelCIFSAppaloosau.v.m.
Benachrichtigungen
Über 800 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 Trayu.v.m.
Über 800 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 ProjectVMwareXvncZenTimestampu.v.m.
Benachrichtigungen
Integration mitDrittsystemen Verteilung von
Artefakten
Über 800 Plugins erweitern den Core!
Core
Source Code Management
Berichte
Build-Mechanismen
Nützliches& Schräges
Build-timeoutChange Log HistoryChuck NorrisClaimConfiguration SlicingCygpathEmotional HudsonGoogle AnalyticsGreen BallsJBPMLocalePort AllocatorPromoted BuildsRadiator ViewRetry Failed BuildsSectioned ViewSidebar-LinkSlave-statusContinuous Integration Gameu.v.m.
Benachrichtigungen
Integration mitDrittsystemen Verteilung von
Artefakten
„Build Wrapper“
Interessante Entwicklungsfelder: Wie geht es weiter?
CI für mobile & embedded devices
Build-Pipelines fürkomplexe Abläufe
Katalogisierung erprobter Vorgehensweisen („patterns“)
Nutzung von Cloud-Diensten
Ausweitung in Richtung Continuous Delivery
Enterprise Continuous Delivery Maturity Model ("CI-FitGrid")
Quelle: Minik und Fredrick: Enterprise Continuous Delivery Maturity Modelhttp://www.urbancode.com/html/resources/white-papers/Enterprise_Continuous_Delivery_Maturity_Model
Building
Deploying
Testing
Reporting
Wo stehen Sieund Ihr Team?
Enterprise Continuous Delivery Maturity Model ("CI-FitGrid")
Quelle: Minik und Fredrick: Enterprise Continuous Delivery Maturity Modelhttp://www.urbancode.com/html/resources/white-papers/Enterprise_Continuous_Delivery_Maturity_Model
Enterprise Continuous Delivery Maturity Model ("CI-FitGrid")
Quelle: Minik und Fredrick: Enterprise Continuous Delivery Maturity Modelhttp://www.urbancode.com/html/resources/white-papers/Enterprise_Continuous_Delivery_Maturity_Model
Enterprise Continuous Delivery Maturity Model ("CI-FitGrid")
Quelle: Minik und Fredrick: Enterprise Continuous Delivery Maturity Modelhttp://www.urbancode.com/html/resources/white-papers/Enterprise_Continuous_Delivery_Maturity_Model
Enterprise Continuous Delivery Maturity Model ("CI-FitGrid")
Quelle: Minik und Fredrick: Enterprise Continuous Delivery Maturity Modelhttp://www.urbancode.com/html/resources/white-papers/Enterprise_Continuous_Delivery_Maturity_Model
Enterprise Continuous Delivery Maturity Model ("CI-FitGrid")
Quelle: Minik und Fredrick: Enterprise Continuous Delivery Maturity Modelhttp://www.urbancode.com/html/resources/white-papers/Enterprise_Continuous_Delivery_Maturity_Model
Building
Deploying
Testing
Reporting
Prof. Dr. Simon Wiest 34102 Informatik 38
Wie geht's weiter?
Prof. Dr. Simon WiestDr. Wiest – Ingenieurbüro für [email protected]
• Artikel: "Enterprise Continuous Delivery Maturity Model"www.urbancode.com
• Buch: "Continuous Delivery"Humble/Farley, 2. Auflage, Addison‐Wesley
• Tool: Jenkins CI‐Serverwww.jenkins‐ci.org