38
Prof. Dr. Simon Wiest 34102 Informatik 1 Continuous Integration im Umfeld Agiler SoftwareEntwicklung Prof. Dr. Simon Wiest 3. NOSER TechnologieImpulse 2013 27.09.2013 | München| D

2013-09-29 Continuous Integration im Umfeld Agiler ... · Java Architekt Projektleiter CI-Coach Professor. Was ist kontinuierliche Integration (CI)? Was ist kontinuierliche Integration

  • Upload
    dinhthu

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

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

Agenda

Überblick

CI in 7 Schritten

CI-FitGrid

Ü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)?

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

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

Agenda

Überblick

CI in 7 Schritten

CI-FitGrid

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.

E-Mail

RSS-Feeds

Instant Messenger

Twitter

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“

Plugin „Continuous Integration Game“

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

Agenda

Überblick

CI in 7 Schritten

CI-FitGrid

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

Agenda

Überblick

CI in 7 Schritten

CI-FitGrid

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