pre-testedcommit 2.0 mit gerrit und jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/c7.pdf ·...

36
Pre-tested commit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] Version: mit Gerrit und Jenkins 1.0 Steffen Schäfer Steffen Schluff

Upload: others

Post on 07-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Pre-tested commit 2.0

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]:

mit Gerrit und Jenkins

1.0

Steffen Schäfer

Steffen Schluff

Page 2: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gliederung

• Pre-tested commit

• Gerrit und Jenkins

• Pre-tested commit mit Gerrit und Jenkins

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 2

Page 3: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

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

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH

• Verteilte Versionsierungstools (DVCS) erleichtern Branches deutlich

• Branches sind Grundlage der meisten DVCS Workflows

3

Page 4: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Splendid isolation (2)

Hauptlinie

Branch A

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 4

(Head)

Branch B

Page 5: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Here be dragons (1)

Hauptlinie

Branch A

Big ScaryMerge ™

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 5

(Head)

Branch B

Merge ™

Page 6: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Here be dragons (2)

• Merge ist das erneute Zusammenführen von Branches

• Branches können sich textuell und semantisch unterscheiden

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH

• „It‘s […] particularly semantic conflicts that make big merges scary.“

• Stabilität der Hauptentwicklungslinie darf nicht leiden

6

Page 7: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Are you the Keymaster? (1)

Hauptlinie

Branch A

Gatekeeper

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 7

(Head)

Branch B

Gatekeeper

Page 8: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

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

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH

– 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 9: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Pre-tested commit

AliceGateway

BuildserverVCS

1 2

3

4

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 9

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

Page 10: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gliederung

• Pre-tested commit

• Gerrit und Jenkins

• Pre-tested commit mit Gerrit und Jenkins

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 10

Page 11: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Been there, done that

BuildTool

CI Server VCS

Update

Build

Results

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 11

DeveloperTeam

CI ServerResult Page

CommitPublish

Inform

Page 12: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Jenkins, at your service

• CI-Server

• Open Source

• Durch Plugins erweiterbar

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH

• Vielzahl vorhandener Plugins

12

Quelle: http://jenkins-ci.org

Page 13: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

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

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH

• Fungiert selbst als Git Server– Transparent für den Client– Bekanntes Client Tooling nutzbar– Rechtekonzept(!)

13

Client Gerrit Git-Repo

Page 14: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gerrit - Workflow

Gerrit

Branch:master

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 14

Entwickler

Page 15: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gerrit - Workflow

Gerrit

change 1Patch SetBranch:

master

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 15

Entwickler

1

Page 16: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gerrit - Workflow

Gerrit

change 1Patch SetBranch:

master

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 16

Entwickler Reviewer

1

2

Page 17: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gerrit - Workflow

Gerrit

change 1Patch SetBranch:

master

3

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 17

Entwickler Reviewer

1

2

Page 18: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

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

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH

• 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 19: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gerrit + Jenkins - Workflow

Gerrit

Branch:master

Jenkins

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 19

Entwickler Reviewer

Page 20: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gerrit + Jenkins - Workflow

Gerrit

change 1Patch SetBranch:

master

Jenkins

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 20

Entwickler Reviewer

1

Page 21: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gerrit + Jenkins - Workflow

Gerrit

change 1Patch SetBranch:

masterGerrit Trigger Build

Jenkins

2

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 21

Entwickler Reviewer

1

Page 22: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gerrit + Jenkins - Workflow

Gerrit

change 1Patch SetBranch:

masterGerrit Trigger Build

Jenkins

2

3

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 22

Entwickler Reviewer

1

Page 23: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gerrit + Jenkins - Workflow

Gerrit

change 1Patch SetBranch:

masterGerrit Trigger Build

Jenkins

2

3

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 23

Entwickler

1

4

Reviewer

Page 24: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gerrit + Jenkins - Workflow

Gerrit

change 1Patch SetBranch:

masterGerrit Trigger Build

Jenkins

2

35

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 24

Entwickler Reviewer

1

4

Page 25: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gerrit + Jenkins - Workflow

Gerrit

change 1Patch SetBranch:

masterGerrit Trigger Build

master branch build

Jenkins

2

35

6

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 25

Entwickler Reviewer

1

4

Page 26: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Demonstration

• Erzeugung von Changes

• Build über Gerrit Trigger

• Integration von Changes in den Entwicklungszweig

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 26

Page 27: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Gliederung

• Pre-tested commit

• Gerrit und Jenkins

• Pre-tested commit mit Gerrit und Jenkins

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 27

Page 28: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Wo ist jetzt der Pre-Tested commit?

Gerrit

change 1Patch SetBranch:

masterGerrit Trigger Build

master branch build

Jenkins

2

35

6

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 28

Entwickler Reviewer

1

4

Page 29: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Pre-tested commit mit Gerrit und Jenkins

Gerrit

change 1Patch SetBranch:

masterGerrit Trigger Build

master branch build

Jenkins

2

35

6

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 29

Entwickler Reviewer

1

Page 30: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Pre-tested commit mit Gerrit und Jenkins

Gerrit

change 1Patch SetBranch:

masterGerrit Trigger Build

master branch build

Jenkins

2

3+43+4

5

6

Neuer Build-SchrittNeuer Build-Schritt

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 30

Entwickler Reviewer

1

Page 31: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

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

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH 31

Page 32: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

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

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH

• 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 33: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

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)

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH

• Toolstack ist Open Source– Free speech and free beer

• Pretested commit auf Basis von Gerrit– Somit Code Review auf Wunsch nutzbar

33

Page 34: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Links

• Continuous vs. Controlled Integration– http://www.ddj.com/architect/205917960

• MF Bliki: FeatureBranch– http://martinfowler.com/bliki/FeatureBranch.html

• Jenkins

Pre-tested commit 2.0 mit Gerrit und Jenkins© 2012 Orientation in Objects GmbH

• Jenkins– http://jenkins-ci.org/

• Gerrit– http://code.google.com/p/gerrit/

• Gerrit Trigger– https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger

34

Page 35: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

? ??Fragen ?

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

??Fragen ?

35

Page 36: Pre-testedcommit 2.0 mit Gerrit und Jenkinsalt.java-forum-stuttgart.de/jfs/2012/folien/C7.pdf · Pre-testedcommit 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim

Vielen Dank für ihre

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

Vielen Dank für ihre Aufmerksamkeit !