pre-tested commit 2.0 mit gerrit und jenkins · 11.07.2012 1 orientation in objects gmbh weinheimer...
TRANSCRIPT
11.07.2012
1
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
Pre-tested commit 2.0 mit Gerrit und Jenkins
1.0
Steffen Schäfer
Steffen Schluff
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gliederung
• Pre-tested commit
• Gerrit und Jenkins
• Pre-tested commit mit Gerrit und Jenkins
2
11.07.2012
2
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Splendid isolation (2)
4
Hauptlinie(Head)
Branch A
Branch B
11.07.2012
3
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Here be dragons (1)
5
Hauptlinie(Head)
Branch A
Branch B
Big ScaryMerge ™
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
11.07.2012
4
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Are you the Keymaster? (1)
7
Hauptlinie(Head)
Branch A
Branch B
Gatekeeper
Gatekeeper
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
11.07.2012
5
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gliederung
• Pre-tested commit
• Gerrit und Jenkins
• Pre-tested commit mit Gerrit und Jenkins
10
11.07.2012
6
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Been there, done that
11
BuildTool
CI Server
DeveloperTeam
VCS
CI ServerResult Page
Update
Commit
Build
Results
Publish
Inform
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Jenkins, at your service
• CI-Server
• Open Source
• Durch Plugins erweiterbar
• Vielzahl vorhandener Plugins
12
Quelle: http://jenkins-ci.org
11.07.2012
7
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gerrit - Workflow
14
Gerrit
Entwickler
Branch:master
11.07.2012
8
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gerrit - Workflow
15
Gerrit
Entwickler
change 1Patch SetBranch:
master
1
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gerrit - Workflow
16
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
master
1
2
11.07.2012
9
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gerrit - Workflow
17
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
master
1
2
3
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
11.07.2012
10
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
19
Gerrit
Entwickler Reviewer
Branch:master
Jenkins
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
20
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
master
Jenkins
1
11.07.2012
11
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
21
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
Jenkins
1
2
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
22
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
Jenkins
1
2
3
11.07.2012
12
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
23
Gerrit
Entwickler
change 1Patch SetBranch:
masterGerrit Trigger Build
Jenkins
1
2
3
4
Reviewer
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gerrit + Jenkins - Workflow
24
Gerrit
Entwickler Reviewer
change 1Patch SetBranch:
masterGerrit Trigger Build
Jenkins
1
2
3
4
5
11.07.2012
13
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Demonstration
• Erzeugung von Changes
• Build über Gerrit Trigger
• Integration von Changes in den Entwicklungszweig
26
11.07.2012
14
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Gliederung
• Pre-tested commit
• Gerrit und Jenkins
• Pre-tested commit mit Gerrit und Jenkins
27
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
11.07.2012
15
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
11.07.2012
16
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
11.07.2012
17
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 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
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Mehr von OIO zum Thema…
• Seminar: Versionsverwaltung mit Git– http://www.oio.de/git-schulung-versionsverwaltung-seminar-dvcs-
training.htm
• Seminar: Versionsverwaltung mit Subversion– http://www.oio.de/subversion-svn-schulung.htm
• Seminar: Testen von Java Programmen– http://www.oio.de/java-testen-schulung.htm
• JAX 2011 - Build-Management mit marktüblichen Tools– http://www.oio.de/m/konf/jax2011/Build-
Management_mit_marktueblichen_Tools-jax2011.pdf
• JAX 2010 - Brauch ich ein verteiltes Versionsverwaltungssystem (DVCS)?– http://www.oio.de/m/konf/jax2010/verteilt-versionsverwaltung-svn-branches-
jax2010.pdf
34
11.07.2012
18
Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH
Mehr von OIO zum Thema…
• Zeitschriftenartikel – Java Spektrum 3/2011– Optimiertes Testen: von Gateways, Gatekeepern und Keymastern– http://www.oio.de/public/softwaretest/optimiertes-testen-gateways-
gatekeeper-keymaster_JS_03_11.pdf
• Beratung - Open Source Tools– http://www.oio.de/beratung-consulting/open-source-
software/tools/index.htm
35
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
??
? ?
????
Fragen ?
36
11.07.2012
19
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
Vielen Dank für ihre Aufmerksamkeit !