orientpkt 2013 gerrit und jenkins - ein traumpaar für pre ... · 26.07.2013 1 orientation in...

21
26.07.2013 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] Version: 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 Commit © 2013 Orientation in Objects GmbH Ihr Sprecher 2 Steffen Schäfer Trainer, Berater, Entwickler Schwerpunkte Web und Rich Client Entwicklung JIRA Plugin Entwicklung Tool Integration

Upload: others

Post on 07-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

26.07.2013

1

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]:

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

[email protected]

??

? ?

????

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

[email protected]

Vielen Dank für ihre Aufmerksamkeit !