Gerrit Code Review
Upcoming SlideShare
Loading in...5
×
 

Gerrit Code Review

on

  • 14,748 views

Overview of Gerrit Code Review with a specific focus on its Jenkins CI integration....

Overview of Gerrit Code Review with a specific focus on its Jenkins CI integration.

See and learn how to improve your Agile application lifecycle management by making your builds more stable and your development more under control.

Gerrit Code Review allows developers to share ideas and get collective ownership of the project design and code-style.

Statistics

Views

Total Views
14,748
Views on SlideShare
9,924
Embed Views
4,824

Actions

Likes
14
Downloads
262
Comments
1

39 Embeds 4,824

http://hudsonmobi.wordpress.com 2221
http://jenkinsmobi.me 1212
http://www.halyph.com 1136
http://halyph.blogspot.com 111
http://cliveboulton.com 43
http://kemppe25.rssing.com 13
http://abtasty.com 11
http://halyph.blogspot.in 10
http://cloud.feedly.com 10
http://halyph.blogspot.de 9
http://halyph.blogspot.ca 5
http://halyph.blogspot.kr 4
http://halyph.blogspot.ru 3
http://halyph.blogspot.co.uk 3
http://halyph.blogspot.co.il 2
http://halyph.blogspot.fr 2
http://halyph.blogspot.co.nz 2
https://twitter.com 2
http://halyph.blogspot.ch 2
http://webcache.googleusercontent.com 2
http://halyph.blogspot.it 2
http://halyph.blogspot.gr 2
http://www.google.com 1
https://www.google.fr 1
http://www.google.com&_=1332525129115 HTTP 1
http://www.google.com&_=1332524748080 HTTP 1
http://webcache-exp-test.googleusercontent.com 1
http://halyph.blogspot.pt 1
http://halyph.blogspot.com.es 1
http://halyph.blogspot.jp 1
http://halyph.blogspot.ro 1
http://search.daum.net 1
http://translate.googleusercontent.com 1
http://halyph.blogspot.tw 1
http://halyph.blogspot.com.au 1
http://halyph.blogspot.se 1
http://halyph.blogspot.sk 1
http://halyph.blogspot.com.br 1
http://localhost 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Gerrit Code Review Gerrit Code Review Presentation Transcript

  • Main sponsor GerritLuca Milanesio
  • Who’s that guy ?review.GerritForge™.com Copyright © 2012 – LMIT Software
  • Agenda • Agile and the broken build dilemma • Can Git solve it ? • “Agile” workflow with Git • Gerrit: the smart way • Just about code-review ? • Let’s play with Gerrit live !review.GerritForge™.com Copyright © 2012 – LMIT Software
  • Agile and continuous integration • Who is using CI ? … raise your hand !!!! • Good or bad ? •Why ?review.GerritForge™.com Copyright © 2012 – LMIT Software
  • Continuous Integration is GOOD • Live “weather forecast” of the project • Detect and resolve conflicts earlier • Bring TDD to life • Enforce collective code ownership • … and much morereview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Breaking the build id BAD ! • All devs gets tests broken • Build stops • Test are NOT executed … all team goes at “DEFCON1” to fix it ASAP !!review.GerritForge™.com Copyright © 2012 – LMIT Software
  • Broken build dilemma: how to avoid it ? 1. Do not PUSH until you’re 100% sure of GREEN bar 2. Create multiple personal CI builds and validate builds before PUSH 3. Install a “Jenkins Build Game” plug- in and get free beers  … DO ANY OF THEM REALLY WORK ?review.GerritForge™.com Copyright © 2012 – LMIT Software
  • Git … can you help out ? Git short story: the anti-Subversion • Apr 2005 – Linus writes PERL scripts for Linux Kernel SCM • Jul 2005 … Git 0.99 is out ! Git principles: • Continuous branching / merging / rebasing / stashing • Distributed repositories • Distributed patch distribution • Early integration (before breaking the CI)review.GerritForge™.com Copyright © 2012 – LMIT Software
  • Git topic-branches workflow B4 B5 topic1 A1 A2 A3 master C2 C3 C4 topic2 Agile workflow – one topic branch per story • Keep on branch whilst RED / AMBER bar • Continuous rebase on master • Merge on GREEN barreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Problem resolved ? • Let’s use Git then ? “My repo is the master” “Git is all about peer-to-peer dev” “Who has reverted my commits ? … !$@#!$!” • Git doesn’t enforce any policy  Peer-to-peer development allowed  Dictatorship or anarchy of changes are both allowed … is there a “better Git” out there ?review.GerritForge™.com Copyright © 2012 – LMIT Software
  • Gerrit, brief history Google Mondrian The idea: Guido Van Rossum  Code-review for Perforce  Porting to SVN and OpenSourced Rietveld  Python-based 2008 - Project fork for AOSP (Shawn Pearce / Joe Onorato) Gerrit Rietveld  Name changed to Gerrit Rietveld  Based on Git  Set of “patches” on original Guido’s Rietveld project gerrit 2009 - Gerrit 2, the Java + GWT rewriting (Shawn Pearce)review.GerritForge™.com Copyright © 2012 – LMIT Software
  • What is Gerrit today ? • 100% pure Java SSH and HTTP Git backend  Powered by JGit • GWT Web-view administration  Users and Groups  Project and branch security  Git repository browsing • Git repository replication engine • Code collaboration and review • Code validation through Jenkins Triggersreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Gerrit: high level workflow CI Build: OK master A1review.GerritForge™.com Copyright © 2012 – LMIT Software
  • Gerrit: high level workflow CI Build: OK master A1 clone local A1 masterreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Gerrit: high level workflow CI Build: OK master A1 clone local A1 C2 masterreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Gerrit: high level workflow CI Build: OK master A1 C2 refs/for/master clone push local A1 C2 masterreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Gerrit: high level workflow CI Build: OK master A1 Verified: -1 (build failed) C2 refs/for/master clone push local A1 C2 masterreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Gerrit: high level workflow CI Build: OK master A1 Verified: -1 (build failed) C2 C2* refs/for/master clone push push local A1 C2 C2* masterreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Gerrit: high level workflow CI Build: OK master A1 Verified: -1 Verified: +1 (build failed) (build OK) C2 C2* refs/for/master clone push push local A1 C2 C2* masterreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Gerrit: high level workflow CI Build: OK master A1 Verified: -1 Verified: +1 (build failed) (build OK) C2 C2* refs/for/master Reviewed: +2 clone push push local A1 C2 C2* masterreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Gerrit: high level workflow CI Build: OK CI Build: OK master A1 C2* Verified: -1 Verified: +1 (build failed) (build OK) C2 C2* refs/for/master Reviewed: +2 clone push push local A1 C2 C2* masterreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Cool, isn’t it ? • Gerrit allow “automatic” topic-branches • Triggers with Jenkins branch validation • Enforce collective code-ownership  People “interacts” with the code changes  Discussion on style and architecture  Democratic voting (+1 / -1) • Project history  Reason behind changes is recorded in code-reviewreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • See Gerrit “live” in actionreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • 1. Set-up • Option-A: download and install 1. Download from http://code.google.com/p/gerrit/downloads/list 2. Gerrit install wizard: java –jar gerrit-2.2.2.1.war init -d ~/gerrit 3. Run Gerrit: ~/gerrit/bin/gerrit.sh start • Option-B: Gerrit as hosted service  Assembla.com (free for OpenSorce projects)  GitEnterprise.com (free up to 10 users)review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 2. Create user and add SSH keys • Option-A: not easy   Gerrit doesn’t support a “local user registry”  Options: LDAP or OpenID • Option-B: use the provider user registration  Assembla: https://www.assembla.com/signup  GitEnterprise: https://gitent-scm.com/signupreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • 3. Talk to Gerrit via SSH • Gerrit SSH console  Listen at 29418 port  Not a real SSH server (just Gerrit listening)review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 4. Create a Gerrit project • Gerrit Project is:  Git repository (use “path notation” to organise projects)  Access permissions  Code-review and change-sets • Option-A: use Gerrit SSH command $ ssh -p 29418 lmilanesio@localhost gerrit create-project lmit/33degree • Option-B: user the provider-specific page  Assembla: N/A (only 1 project associated to your “space”)  GitEnterprise: https://gitent-scm.com/newreporeview.GerritForge™.com Copyright © 2012 – LMIT Software
  • 5. Clone repo from Gerrit • Git SSH repository URL is: ssh://<user>@<host>:29418/<Gerrit project>.git • Gerrit supports HTTP or HTTP/S repository URL: http://<Gerrit URL>/p/<Gerrit project>.git NOTE: For HTTP authentication, put your credentials on ~/.netrc file machine <hostname> login <username> password <password>review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 6. Gerrit Change-Id • SHA-1 GUID of a change-set under review • MUST be last line of commit msg Hint: install Gerrit post-commit hook for auto- generating Change-Id after each Git commit Now all Git commit will auto-generate a Change-Id !review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 7. Submit a change for review • Change for review committed locally • Push to refs/for/<branch> for submitting local Git changes for review on <branch>review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 8. Verify change against CIreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • 9. Additional patch-set to Change-Id • Fix the problem locally • Amend the commit (same Change-Id) • Push again to refs/for/<branch> for adding one extra change-setreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • 10. Change-Id is validated against CI • Request code-reviewreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • 11. Review and comment changesreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • 12. Review merge and submit change • One or more reviewers can “vote” for the change • Authorised users can then “Submit” the change. • Change is automatically merged to masterreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • 13. Master build is triggered … SUCCESS !!review.GerritForge™.com Copyright © 2012 – LMIT Software
  • … is just about code-review then ? GitHub BitBucket Gitorious Gerrit SSH / HTTPS Free public repo Free private repo Repo security Branch security Code review Hooks / API Replication CI Integration OpenSource / extensible Issue-tracker integrationreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Credits and resources • Many thanks to Shawn Pearce, father of Gerrit Its contributors and Google Inc. • Google Gerrit code-review http://code.google.com/p/gerrit/ • Assembla Gerrit http://review.assembla.com • GitEnterprise http://review.gitent-scm.com @gitenterprise Slides available at http://www.slideshare.net/lucamilanesio Follow me: @lucamilanesioreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • BACKUPreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Gerrit: just code-review then ? • Git Security – Groups Define different “roles” in the project System groups • Anonymous users: use for public projects • Registered Users: all users • Administrators: to administer Gerrit • Project Owners: to administer projects • Non-interactive Users: for CI or batch operations Groups can be hierarchical (groups of groups)review.GerritForge™.com Copyright © 2012 – LMIT Software
  • Define groups and members Admin > Groupsreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Putting all together with projects • Git Security: rights to projects Define access rights to Git operations Control the Gerrit identity vs Git author / committer Delegate project administration Assign code-review voting range rights Define who can submit and merge changes Organise project rights hirarchicallyreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Define project access rights per refspec Admin > Projects > 33degree > Accessreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • Assign access rights to Groupsreview.GerritForge™.com Copyright © 2012 – LMIT Software
  • … and Gerrit replication Remote gerrit or git Remote gerrit or git Master gerritreview.GerritForge™.com Copyright © 2012 – LMIT Software