gerrit und jenkins – ein traumpaar für pre-tested commit · 2020. 7. 13. · 25.01.2013 3 ©...
TRANSCRIPT
25.01.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
Gliederung
• Pre-tested commit
• Gerrit und Jenkins
• Pre-tested commit mit Gerrit und Jenkins
2
25.01.2013
2
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
3
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Splendid isolation (2)
4
Hauptlinie(Head)
Branch A
Branch B
25.01.2013
3
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Here be dragons (1)
5
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
6
25.01.2013
4
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Are you the Keymaster? (1)
7
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“)
8
25.01.2013
5
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Pre-tested commit
9
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
10
25.01.2013
6
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Been there, done that
11
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
12
Quelle: http://jenkins-ci.org
25.01.2013
7
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(!)
13
Client Gerrit Git-Repo
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit - Workflow
14
Gerrit
Entwickler
Branch:master
25.01.2013
8
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit - Workflow
15
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
16
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
master
1
2
25.01.2013
9
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit - Workflow
17
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
18
25.01.2013
10
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
19
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
20
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
master
Jenkins
1
25.01.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
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
22
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
Jenkins
1
2
3
25.01.2013
12
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
23
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
24
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
Jenkins
1
2
3
4
5
25.01.2013
13
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
25
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
26
25.01.2013
14
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
27
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Wo ist jetzt der Pre-Tested commit?
28
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
master branch build
Jenkins
1
2
3
4
5
6
25.01.2013
15
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Pre-tested commit mit Gerrit und Jenkins
29
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
30
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
25.01.2013
16
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
31
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
32
25.01.2013
17
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
33
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Mehr von OIO zum Thema…
• Schulung: Versionsverwaltung mit Git– http://www.oio.de/git-schulung-versionsverwaltung-seminar-dvcs-training.htm
• Schulung: Hudson Grundlagen– http://www.oio.de/schulung-hudson-seminar-continuous-integration-training-
jenkins.htm/
• JAX 2011 - Build-Management mit marktüblichen Tools– http://www.oio.de/m/konf/jax2011/Build-Management_mit_marktueblichen_Tools-
jax2011.pdf
• Zeitschriften-Artikel: Optimiertes Testen– http://www.oio.de/public/softwaretest/optimiertes-testen-gateways-gatekeeper-
keymaster_JS_03_11.pdf
• JAX-Vortrag: Brauch ich ein DVCS?– http://www.oio.de/m/konf/jax2010/verteilt-versionsverwaltung-svn-branches-
jax2010.pdf
34
25.01.2013
18
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Ihr Sprecher
35
Steffen Schäfer
Trainer, Berater, Entwickler
SchwerpunkteWeb und Rich Client Entwicklung
JIRA Plugin EntwicklungTool Integration
Gerrit und Jenkins – ein Traumpaar für Pre-Tested Com mit© 2013 Orientation in Objects GmbH
Ihr Sprecher
36
Steffen Schluff
Trainer, Berater, Entwickler
SchwerpunkteOpen Source Tooling
Build ManagementClean Code
25.01.2013
19
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
??
? ?
????
Fragen ?
37
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
Vielen Dank für ihre Aufmerksamkeit !