gerrit und jenkins – ein traumpaar für pre-tested commit · 2020. 7. 13. · 25.01.2013 3 ©...

19
25.01.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 Gliederung Pre-tested commit Gerrit und Jenkins Pre-tested commit mit Gerrit und Jenkins 2

Upload: others

Post on 16-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

25.01.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

Gliederung

• Pre-tested commit

• Gerrit und Jenkins

• Pre-tested commit mit Gerrit und Jenkins

2

Page 2: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 3: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 4: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 5: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 6: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 7: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 8: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 9: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 10: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 11: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 12: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 13: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 14: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 15: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 16: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 17: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 18: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

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

Page 19: Gerrit und Jenkins – ein Traumpaar für Pre-Tested Commit · 2020. 7. 13. · 25.01.2013 3 © 2013 Orientation in Objects GmbH Gerrit und Jenkins – ein Traumpaar für Pre-Tested

25.01.2013

19

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

??

? ?

????

Fragen ?

37

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

Vielen Dank für ihre Aufmerksamkeit !