integration mit jenkins - asqf...jira java.net kagemai ldap mantis pxe polarion redmine regex email...

55
Prof. Dr. Simon Wiest 34102 Informatik 1 Continuous Integration mit Jenkins (Noch) fauler werden in 10 Schritten Prof. Dr. Simon Wiest Hochschule der Medien, Stuttgart 25.10.2012

Upload: others

Post on 18-Mar-2020

17 views

Category:

Documents


0 download

TRANSCRIPT

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

Gestatten, Jenkins.

Agenda

Überblick

10 Schritte

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

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“ 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

Agenda

Überblick

10 Schritte

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

21/24

Demo 1

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.

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

Repository

JenkinsRepository

Browser

25/24

Demo 2

6. Benachrichtigungen: Viele Kanäle stehen offen.

E-Mail

RSS-Feeds

Instant Messenger

Twitter

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

28/24

Demo 3

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“

Plugin „Continuous Integration Game“

Agenda

Überblick

10 Schritte

HERUNTERLADEN

EINSETZEN

WEITERSAGEN

MITMACHEN

Prof. Dr. Simon Wiest 34102 Informatik 49

jenkins‐ci.orgDownloadsSource CodeIssue‐TrackerJenkins‐On‐JenkinsBlog

Prof. Dr. Simon WiestHochschule der Medien, Stuttgartwiest@hdm‐stuttgart.de

BONUSMATERIAL

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