pre-tested commit 2.0 mit gerrit und jenkins · 11.07.2012 1 orientation in objects gmbh weinheimer...

19
11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] Version: 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

Upload: others

Post on 07-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

11.07.2012

1

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]:

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

Page 2: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 3: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 4: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 5: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 6: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 7: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 8: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 9: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 10: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 11: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 12: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 13: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 14: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 15: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 16: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 17: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

Page 18: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

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

[email protected]

??

? ?

????

Fragen ?

36

Page 19: Pre-tested commit 2.0 mit Gerrit und Jenkins · 11.07.2012 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Pre-tested commit 2.0 mit Gerrit und

11.07.2012

19

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

Vielen Dank für ihre Aufmerksamkeit !