OrientPkt 2013 Gerrit und Jenkins - ein Traumpaar für Pre ... · 26.07.2013 1 Orientation in...
Transcript of OrientPkt 2013 Gerrit und Jenkins - ein Traumpaar für Pre ... · 26.07.2013 1 Orientation in...
26.07.2013
1
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
Gerrit und Jenkins –ein Traumpaar für
Pre-Tested Commit
1.0
Steffen Schäfer
Steffen Schluff
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Ihr Sprecher
2
Steffen Schäfer
Trainer, Berater, Entwickler
SchwerpunkteWeb und Rich Client Entwicklung
JIRA Plugin EntwicklungTool Integration
26.07.2013
2
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Ihr Sprecher
3
Steffen Schluff
Trainer, Berater, Entwickler
SchwerpunkteOpen Source Tooling
Build ManagementClean Code
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gliederung
• Pre-tested commit
• Gerrit und Jenkins
• Pre-tested commit mit Gerrit und Jenkins
4
26.07.2013
3
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Splendid isolation (1)
• Klassischer Wunsch: Isolation größerer Entwicklungsaufgaben– … mit Gewährleistung einer sauberen Hauptentwicklungslinie
• „The key which opens real […] parallel development are branches.“– Branch ist ein sich abspaltender neuer Entwicklungszweig
• Verteilte Versionsierungstools (DVCS) erleichtern Branches deutlich
• Branches sind Grundlage der meisten DVCS Workflows
5
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Splendid isolation (2)
6
Hauptlinie(Head)
Branch A
Branch B
26.07.2013
4
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Here be dragons (1)
7
Hauptlinie(Head)
Branch A
Branch B
Big ScaryMerge ™
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Here be dragons (2)
• Merge ist das erneute Zusammenführen von Branches
• Branches können sich textuell und semantisch unterscheiden
• „It‘s […] particularly semantic conflicts that make big merges scary.“
• Stabilität der Hauptentwicklungslinie darf nicht leiden
8
26.07.2013
5
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Are you the Keymaster? (1)
9
Hauptlinie(Head)
Branch A
Branch B
Gatekeeper
Gatekeeper
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Are you the Keymaster? (2)
• Gatekeeper garantiert Stabilität des Heads– Bezeichnung kann variieren (z.B. Integrator) – Besitzt als einziger Schreibrechte in der Hauptentwicklungslinie
• Gatekeeper kann Mensch oder Maschine sein– Oder beides: Mensch prüft erst nach Maschine– Auch mehrere Menschen möglich: Peer Code Review einer Gruppe
• Wunsch „Saubere Hauptentwicklungslinie“ ist nicht DVCS spezifisch – Änderungen vor Commit als „persönlichen“ Gateway Build prüfen– In diversen CI Servern bereits verfügbar („pre-tested commit“)
10
26.07.2013
6
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Pre-tested commit
11
AliceGateway
BuildserverVCS
1 2
3
4
• Benutzer schickt Änderungen zum Testen an Gateway
• Gateway testet VCS Stand mit Änderungen
• Gateway sendet Testergebnis an Benutzer
• Commit der Änderungen durch Benutzer wenn Testergebnis OK
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gliederung
• Pre-tested commit
• Gerrit und Jenkins
• Pre-tested commit mit Gerrit und Jenkins
12
26.07.2013
7
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Been there, done that
13
BuildTool
CI Server
DeveloperTeam
VCS
CI ServerResult Page
Update
Commit
Build
Results
Publish
Inform
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Jenkins, at your service
• CI-Server
• Open Source
• Durch Plugins erweiterbar
• Vielzahl vorhandener Plugins
14
Quelle: http://jenkins-ci.org
26.07.2013
8
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit
• Code Review Werkzeug für Git– Entstand im Kontext des Android Projektes– Wurzeln liegen in Rietveld (SVN Code Reviews)
• Review der Änderungen vor Integration in den Entwicklungszweig– Stärke gegenüber anderen Tools
• Fungiert selbst als Git Server– Transparent für den Client– Bekanntes Client Tooling nutzbar– Rechtekonzept(!)
15
Client Gerrit Git-Repo
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit - Workflow
16
Gerrit
Entwickler
Branch:master
26.07.2013
9
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit - Workflow
17
Gerrit
Entwickler
change 1Patch SetBranch:
master
1
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit - Workflow
18
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
master
1
2
26.07.2013
10
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit - Workflow
19
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
master
1
2
3
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit Trigger
• Jenkins Plugin
• Beinhaltet spezifische Erweiterungen für Gerrit
• Neuer Build Trigger für Gerrit – Erlaubt das Anstoßen von Builds bei Erzeugung von Patch Sets
• Erweitert Konfiguration für Git Repo Zugriff – Ermöglicht einen Build auf Basis von Patch Sets
• Gibt nach dem Build Feedback zum Change
• Summe: Jobs zum Bauen von Gerrit Changes nun möglich
20
26.07.2013
11
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
21
Gerrit
Entwickler Reviewer
Branch:master
Jenkins
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
22
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
master
Jenkins
1
26.07.2013
12
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
23
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
Jenkins
1
2
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
24
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
Jenkins
1
2
3
26.07.2013
13
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
25
Gerrit
Entwickler
change 1Patch SetBranch:
masterGerrit Trigger Build
Jenkins
1
2
3
4
Reviewer
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
26
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
Jenkins
1
2
3
4
5
26.07.2013
14
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
27
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
master branch build
Jenkins
1
2
3
4
5
6
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Demonstration
• Erzeugung von Changes
• Build über Gerrit Trigger
• Integration von Changes in den Entwicklungszweig
28
26.07.2013
15
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gliederung
• Pre-tested commit
• Gerrit und Jenkins
• Pre-tested commit mit Gerrit und Jenkins
29
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Wo ist jetzt der Pre-Tested commit?
30
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
master branch build
Jenkins
1
2
3
4
5
6
26.07.2013
16
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Pre-tested commit mit Gerrit und Jenkins
31
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
master branch build
Jenkins
1
2
35
6
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Pre-tested commit mit Gerrit und Jenkins
32
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
master branch build
Jenkins
1
2
3+43+4
5
6
Neuer Build-SchrittNeuer Build-Schritt
26.07.2013
17
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Demonstration
• Pre-tested commit mit Gerrit und Jenkins
33
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Give me the grizzly details
• Weiterer Build Schritt– Typ: Shell– ssh -p 29418 <GERRIT_USER>@<HOST> gerrit approve --verified +1 -
-code-review +2 --project <PROJECT_NAME> --submit $GERRIT_PATCHSET_REVISION
34
26.07.2013
18
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Pre-tested commit - Wer macht das noch?
• IntelliJ + Teamcity– Vorreiter in diesem Bereich– Tool-abhängiger Ansatz– Abschließende Integration in das Repository erfolgt durch die IDE– http://www.jetbrains.com/teamcity/features/delayed_commit.html
• Bamboo 4.0– Gatekeeper für Feature Branches (Teil von Automatic Branch Merging)– http://www.atlassian.com/software/bamboo/overview/dvcs
• Hudson / Jenkins– Konzept im Wiki– https://wiki.jenkins-ci.org/display/JENKINS/Designing+pre-tested+commit
35
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Fazit
• Realisierung von Pre-tested commits leicht möglich– Rein Server-seitiger Workflow, keine Bindung an spezielle Clients
• Pre-tested commits für alle sichtbar– Und leicht lokal reproduzierbar (cherry-pick)
• Toolstack ist Open Source– Free speech and free beer
• Pretested commit auf Basis von Gerrit– Somit Code Review auf Wunsch nutzbar
36
26.07.2013
19
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Links
• Continuous vs. Controlled Integration– http://www.ddj.com/architect/205917960
• MF Bliki: FeatureBranch– http://martinfowler.com/bliki/FeatureBranch.html
• Jenkins– http://jenkins-ci.org/
• Gerrit– http://code.google.com/p/gerrit/
• Gerrit Trigger– https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger
37
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
??
? ?
????
Fragen ?
26.07.2013
20
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Folien zum Vortrag
• Die Folien werden auf unserer Website veröffentlicht– http://oio.de/tiny/orientierungspunkt-archiv
39
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Kommende Orientierungspunkte
• Infinispan - NoSQL für den Enterprise Java Alltag– Freitag, 30. August 2013 - 17:00-18:00 Uhr
• Einführung in BPMN 2.0– Freitag, 27. September 2013 - 17:00-18:00 Uhr
26.07.2013
21
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
Vielen Dank für ihre Aufmerksamkeit !