SlideShare a Scribd company logo
1 of 45
Main sponsor




  Gerrit
Luca 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 more




review.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 bar


review.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 Triggers


review.GerritForge™.com               Copyright © 2012 – LMIT Software
Gerrit: high level workflow
                 CI Build: OK


                                                              master
         A1




review.GerritForge™.com         Copyright © 2012 – LMIT Software
Gerrit: high level workflow
                 CI Build: OK


                                                              master
         A1




 clone



                                                                    local
      A1                                                           master



review.GerritForge™.com         Copyright © 2012 – LMIT Software
Gerrit: high level workflow
                 CI Build: OK


                                                              master
         A1




 clone



                                                                    local
      A1         C2                                                master



review.GerritForge™.com         Copyright © 2012 – LMIT Software
Gerrit: high level workflow
                  CI Build: OK


                                                               master
         A1




                  C2                                    refs/for/master




 clone     push



                                                                     local
      A1          C2                                                master



review.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                                                             master



review.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*                                      master



review.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*                                             master



review.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*                                             master



review.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*                                             master



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




review.GerritForge™.com              Copyright © 2012 – LMIT Software
See Gerrit “live” in action




review.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/signup




review.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/newrepo



review.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 CI




review.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-set




review.GerritForge™.com           Copyright © 2012 – LMIT Software
10. Change-Id is validated against CI




                          • Request code-review
review.GerritForge™.com         Copyright © 2012 – LMIT Software
11. Review and comment changes




review.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 master


review.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
    integration




review.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: @lucamilanesio

review.GerritForge™.com                    Copyright © 2012 – LMIT Software
BACKUP




review.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 > Groups




review.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 hirarchically


review.GerritForge™.com           Copyright © 2012 – LMIT Software
Define project access rights per refspec
 Admin > Projects > 33degree > Access




review.GerritForge™.com                 Copyright © 2012 – LMIT Software
Assign access rights to Groups




review.GerritForge™.com     Copyright © 2012 – LMIT Software
… and Gerrit replication
                                                         Remote
                                                        gerrit or git
                           Remote
                          gerrit or git

    Master
    gerrit




review.GerritForge™.com                   Copyright © 2012 – LMIT Software

More Related Content

What's hot

深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)Will Huang
 
CI/CD Best Practices for Your DevOps Journey
CI/CD Best  Practices for Your DevOps JourneyCI/CD Best  Practices for Your DevOps Journey
CI/CD Best Practices for Your DevOps JourneyDevOps.com
 
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.skJuraj Hantak
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Annie Huang
 
DevOps 101 - an Introduction to DevOps
DevOps 101  - an Introduction to DevOpsDevOps 101  - an Introduction to DevOps
DevOps 101 - an Introduction to DevOpsRed Gate Software
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesAmazon Web Services
 
Learning git
Learning gitLearning git
Learning gitSid Anand
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub ActionsKnoldus Inc.
 
A successful Git branching model
A successful Git branching model A successful Git branching model
A successful Git branching model abodeltae
 
Git Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowGit Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowMikhail Melnik
 
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...Edureka!
 
A brief introduction to version control systems
A brief introduction to version control systemsA brief introduction to version control systems
A brief introduction to version control systemsTim Staley
 
Continuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIContinuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIDavid Hahn
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101Hazzim Anaya
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash CourseNilay Binjola
 
Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Noa Harel
 

What's hot (20)

深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
 
CI/CD Best Practices for Your DevOps Journey
CI/CD Best  Practices for Your DevOps JourneyCI/CD Best  Practices for Your DevOps Journey
CI/CD Best Practices for Your DevOps Journey
 
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.sk
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
 
DevOps 101 - an Introduction to DevOps
DevOps 101  - an Introduction to DevOpsDevOps 101  - an Introduction to DevOps
DevOps 101 - an Introduction to DevOps
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation Slides
 
Learning git
Learning gitLearning git
Learning git
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
A successful Git branching model
A successful Git branching model A successful Git branching model
A successful Git branching model
 
Devops | CICD Pipeline
Devops | CICD PipelineDevops | CICD Pipeline
Devops | CICD Pipeline
 
Git Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowGit Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-Flow
 
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
 
Subversion to Git Migration
Subversion to Git MigrationSubversion to Git Migration
Subversion to Git Migration
 
A brief introduction to version control systems
A brief introduction to version control systemsA brief introduction to version control systems
A brief introduction to version control systems
 
Continuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIContinuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CI
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)
 

Similar to Gerrit Code Review

Marrying Jenkins and Gerrit-Berlin Expert Days 2013
Marrying Jenkins and Gerrit-Berlin Expert Days 2013Marrying Jenkins and Gerrit-Berlin Expert Days 2013
Marrying Jenkins and Gerrit-Berlin Expert Days 2013Dharmesh Sheta
 
The Virtual Git Summit - Subversion to Git - A Sugar Story
The Virtual Git Summit - Subversion to Git - A Sugar StoryThe Virtual Git Summit - Subversion to Git - A Sugar Story
The Virtual Git Summit - Subversion to Git - A Sugar StoryJohn Mertic
 
Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14
Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14
Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14msohn
 
Compartmentalized Continuous Integration: Enabling Rapid, Flexible Collaborat...
Compartmentalized Continuous Integration: Enabling Rapid, Flexible Collaborat...Compartmentalized Continuous Integration: Enabling Rapid, Flexible Collaborat...
Compartmentalized Continuous Integration: Enabling Rapid, Flexible Collaborat...Perforce
 
A Skeptic's Guide to Docker
A Skeptic's Guide to DockerA Skeptic's Guide to Docker
A Skeptic's Guide to DockerTori Wieldt
 
Git workflows (Basics)
Git workflows (Basics)Git workflows (Basics)
Git workflows (Basics)Roman Kuba
 
Gitlab meets Kubernetes
Gitlab meets KubernetesGitlab meets Kubernetes
Gitlab meets Kubernetesinovex GmbH
 
Comparing Next-Generation Container Image Building Tools
 Comparing Next-Generation Container Image Building Tools Comparing Next-Generation Container Image Building Tools
Comparing Next-Generation Container Image Building ToolsAkihiro Suda
 
Git architects
Git architectsGit architects
Git architectsglitchdata
 
The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...
The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...
The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...NRB
 
What's new with Zend server
What's new with Zend serverWhat's new with Zend server
What's new with Zend serverCOMMON Europe
 
Webcast : Develop Mainframe Software with Open Source SCMs and IBM Dependency...
Webcast : Develop Mainframe Software with Open Source SCMs and IBM Dependency...Webcast : Develop Mainframe Software with Open Source SCMs and IBM Dependency...
Webcast : Develop Mainframe Software with Open Source SCMs and IBM Dependency...DevOps for Enterprise Systems
 
Don't Let Git Get Your Goat!
Don't Let Git Get Your Goat!Don't Let Git Get Your Goat!
Don't Let Git Get Your Goat!CollabNet
 
How We Use GitHub
How We Use GitHubHow We Use GitHub
How We Use GitHubNYC DevShop
 
Git in Continuous Deployment
Git in Continuous DeploymentGit in Continuous Deployment
Git in Continuous DeploymentBrett Child
 
Git/Gerrit with TeamForge
Git/Gerrit with TeamForgeGit/Gerrit with TeamForge
Git/Gerrit with TeamForgeCollabNet
 
mRuby - Powerful Software for Embedded System Development
mRuby - Powerful Software for Embedded System DevelopmentmRuby - Powerful Software for Embedded System Development
mRuby - Powerful Software for Embedded System DevelopmentKazuhiro Koga 古賀一博
 
40 square's git workflow
40 square's git workflow40 square's git workflow
40 square's git workflowRuben Tan
 
Debugging embedded devices using GDB
Debugging embedded devices using GDBDebugging embedded devices using GDB
Debugging embedded devices using GDBChris Simmonds
 

Similar to Gerrit Code Review (20)

Marrying Jenkins and Gerrit-Berlin Expert Days 2013
Marrying Jenkins and Gerrit-Berlin Expert Days 2013Marrying Jenkins and Gerrit-Berlin Expert Days 2013
Marrying Jenkins and Gerrit-Berlin Expert Days 2013
 
The Virtual Git Summit - Subversion to Git - A Sugar Story
The Virtual Git Summit - Subversion to Git - A Sugar StoryThe Virtual Git Summit - Subversion to Git - A Sugar Story
The Virtual Git Summit - Subversion to Git - A Sugar Story
 
Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14
Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14
Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14
 
Compartmentalized Continuous Integration: Enabling Rapid, Flexible Collaborat...
Compartmentalized Continuous Integration: Enabling Rapid, Flexible Collaborat...Compartmentalized Continuous Integration: Enabling Rapid, Flexible Collaborat...
Compartmentalized Continuous Integration: Enabling Rapid, Flexible Collaborat...
 
A Skeptic's Guide to Docker
A Skeptic's Guide to DockerA Skeptic's Guide to Docker
A Skeptic's Guide to Docker
 
Git workflows (Basics)
Git workflows (Basics)Git workflows (Basics)
Git workflows (Basics)
 
Gitlab meets Kubernetes
Gitlab meets KubernetesGitlab meets Kubernetes
Gitlab meets Kubernetes
 
Comparing Next-Generation Container Image Building Tools
 Comparing Next-Generation Container Image Building Tools Comparing Next-Generation Container Image Building Tools
Comparing Next-Generation Container Image Building Tools
 
Git architects
Git architectsGit architects
Git architects
 
The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...
The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...
The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...
 
What's new with Zend server
What's new with Zend serverWhat's new with Zend server
What's new with Zend server
 
Webcast : Develop Mainframe Software with Open Source SCMs and IBM Dependency...
Webcast : Develop Mainframe Software with Open Source SCMs and IBM Dependency...Webcast : Develop Mainframe Software with Open Source SCMs and IBM Dependency...
Webcast : Develop Mainframe Software with Open Source SCMs and IBM Dependency...
 
Don't Let Git Get Your Goat!
Don't Let Git Get Your Goat!Don't Let Git Get Your Goat!
Don't Let Git Get Your Goat!
 
How We Use GitHub
How We Use GitHubHow We Use GitHub
How We Use GitHub
 
Git in Continuous Deployment
Git in Continuous DeploymentGit in Continuous Deployment
Git in Continuous Deployment
 
Application Deployment on IBM i
Application Deployment on IBM iApplication Deployment on IBM i
Application Deployment on IBM i
 
Git/Gerrit with TeamForge
Git/Gerrit with TeamForgeGit/Gerrit with TeamForge
Git/Gerrit with TeamForge
 
mRuby - Powerful Software for Embedded System Development
mRuby - Powerful Software for Embedded System DevelopmentmRuby - Powerful Software for Embedded System Development
mRuby - Powerful Software for Embedded System Development
 
40 square's git workflow
40 square's git workflow40 square's git workflow
40 square's git workflow
 
Debugging embedded devices using GDB
Debugging embedded devices using GDBDebugging embedded devices using GDB
Debugging embedded devices using GDB
 

More from Luca Milanesio

What's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyondWhat's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyondLuca Milanesio
 
Gerrit Analytics applied to Android source code
Gerrit Analytics applied to Android source codeGerrit Analytics applied to Android source code
Gerrit Analytics applied to Android source codeLuca Milanesio
 
Cloud-native Gerrit Code Review
Cloud-native Gerrit Code ReviewCloud-native Gerrit Code Review
Cloud-native Gerrit Code ReviewLuca Milanesio
 
Gerrit Code Review migrations step-by-step
Gerrit Code Review migrations step-by-stepGerrit Code Review migrations step-by-step
Gerrit Code Review migrations step-by-stepLuca Milanesio
 
Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3Luca Milanesio
 
ChronicleMap non-blocking cache for Gerrit v3.3
ChronicleMap non-blocking cache for Gerrit v3.3ChronicleMap non-blocking cache for Gerrit v3.3
ChronicleMap non-blocking cache for Gerrit v3.3Luca Milanesio
 
Gerrit Code Review multi-site
Gerrit Code Review multi-siteGerrit Code Review multi-site
Gerrit Code Review multi-siteLuca Milanesio
 
What's new in Gerrit Code Review 3.0
What's new in Gerrit Code Review 3.0What's new in Gerrit Code Review 3.0
What's new in Gerrit Code Review 3.0Luca Milanesio
 
Gerrit User Summit 2019 Keynote
Gerrit User Summit 2019 KeynoteGerrit User Summit 2019 Keynote
Gerrit User Summit 2019 KeynoteLuca Milanesio
 
Gerrit multi-master / multi-site at GerritHub
Gerrit multi-master / multi-site at GerritHubGerrit multi-master / multi-site at GerritHub
Gerrit multi-master / multi-site at GerritHubLuca Milanesio
 
GerritHub a true Gerrit migration story to v2.15
GerritHub a true Gerrit migration story to v2.15GerritHub a true Gerrit migration story to v2.15
GerritHub a true Gerrit migration story to v2.15Luca Milanesio
 
Gerrit User Summit 2018 - Keynote
Gerrit User Summit 2018 - Keynote Gerrit User Summit 2018 - Keynote
Gerrit User Summit 2018 - Keynote Luca Milanesio
 
Jenkins plugin for Gerrit Code Review pipelines
Jenkins plugin for Gerrit Code Review pipelinesJenkins plugin for Gerrit Code Review pipelines
Jenkins plugin for Gerrit Code Review pipelinesLuca Milanesio
 
Gerrit User Summit 2017 Keynote
Gerrit User Summit 2017 KeynoteGerrit User Summit 2017 Keynote
Gerrit User Summit 2017 KeynoteLuca Milanesio
 
How to keep Jenkins logs forever without performance issues
How to keep Jenkins logs forever without performance issuesHow to keep Jenkins logs forever without performance issues
How to keep Jenkins logs forever without performance issuesLuca Milanesio
 
Jenkins Pipeline on your Local Box to Reduce Cycle Time
Jenkins Pipeline on your Local Box to Reduce Cycle TimeJenkins Pipeline on your Local Box to Reduce Cycle Time
Jenkins Pipeline on your Local Box to Reduce Cycle TimeLuca Milanesio
 
Jenkins world 2017 - Data-Driven CI Pipeline with Gerrit Code Review
Jenkins world 2017 - Data-Driven CI Pipeline with Gerrit Code ReviewJenkins world 2017 - Data-Driven CI Pipeline with Gerrit Code Review
Jenkins world 2017 - Data-Driven CI Pipeline with Gerrit Code ReviewLuca Milanesio
 
Stable master workflow with Gerrit Code Review
Stable master workflow with Gerrit Code ReviewStable master workflow with Gerrit Code Review
Stable master workflow with Gerrit Code ReviewLuca Milanesio
 
Gerrit Code Review Analytics
Gerrit Code Review AnalyticsGerrit Code Review Analytics
Gerrit Code Review AnalyticsLuca Milanesio
 
Zero-Downtime Gerrit Code Review Upgrade
Zero-Downtime Gerrit Code Review UpgradeZero-Downtime Gerrit Code Review Upgrade
Zero-Downtime Gerrit Code Review UpgradeLuca Milanesio
 

More from Luca Milanesio (20)

What's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyondWhat's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyond
 
Gerrit Analytics applied to Android source code
Gerrit Analytics applied to Android source codeGerrit Analytics applied to Android source code
Gerrit Analytics applied to Android source code
 
Cloud-native Gerrit Code Review
Cloud-native Gerrit Code ReviewCloud-native Gerrit Code Review
Cloud-native Gerrit Code Review
 
Gerrit Code Review migrations step-by-step
Gerrit Code Review migrations step-by-stepGerrit Code Review migrations step-by-step
Gerrit Code Review migrations step-by-step
 
Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3
 
ChronicleMap non-blocking cache for Gerrit v3.3
ChronicleMap non-blocking cache for Gerrit v3.3ChronicleMap non-blocking cache for Gerrit v3.3
ChronicleMap non-blocking cache for Gerrit v3.3
 
Gerrit Code Review multi-site
Gerrit Code Review multi-siteGerrit Code Review multi-site
Gerrit Code Review multi-site
 
What's new in Gerrit Code Review 3.0
What's new in Gerrit Code Review 3.0What's new in Gerrit Code Review 3.0
What's new in Gerrit Code Review 3.0
 
Gerrit User Summit 2019 Keynote
Gerrit User Summit 2019 KeynoteGerrit User Summit 2019 Keynote
Gerrit User Summit 2019 Keynote
 
Gerrit multi-master / multi-site at GerritHub
Gerrit multi-master / multi-site at GerritHubGerrit multi-master / multi-site at GerritHub
Gerrit multi-master / multi-site at GerritHub
 
GerritHub a true Gerrit migration story to v2.15
GerritHub a true Gerrit migration story to v2.15GerritHub a true Gerrit migration story to v2.15
GerritHub a true Gerrit migration story to v2.15
 
Gerrit User Summit 2018 - Keynote
Gerrit User Summit 2018 - Keynote Gerrit User Summit 2018 - Keynote
Gerrit User Summit 2018 - Keynote
 
Jenkins plugin for Gerrit Code Review pipelines
Jenkins plugin for Gerrit Code Review pipelinesJenkins plugin for Gerrit Code Review pipelines
Jenkins plugin for Gerrit Code Review pipelines
 
Gerrit User Summit 2017 Keynote
Gerrit User Summit 2017 KeynoteGerrit User Summit 2017 Keynote
Gerrit User Summit 2017 Keynote
 
How to keep Jenkins logs forever without performance issues
How to keep Jenkins logs forever without performance issuesHow to keep Jenkins logs forever without performance issues
How to keep Jenkins logs forever without performance issues
 
Jenkins Pipeline on your Local Box to Reduce Cycle Time
Jenkins Pipeline on your Local Box to Reduce Cycle TimeJenkins Pipeline on your Local Box to Reduce Cycle Time
Jenkins Pipeline on your Local Box to Reduce Cycle Time
 
Jenkins world 2017 - Data-Driven CI Pipeline with Gerrit Code Review
Jenkins world 2017 - Data-Driven CI Pipeline with Gerrit Code ReviewJenkins world 2017 - Data-Driven CI Pipeline with Gerrit Code Review
Jenkins world 2017 - Data-Driven CI Pipeline with Gerrit Code Review
 
Stable master workflow with Gerrit Code Review
Stable master workflow with Gerrit Code ReviewStable master workflow with Gerrit Code Review
Stable master workflow with Gerrit Code Review
 
Gerrit Code Review Analytics
Gerrit Code Review AnalyticsGerrit Code Review Analytics
Gerrit Code Review Analytics
 
Zero-Downtime Gerrit Code Review Upgrade
Zero-Downtime Gerrit Code Review UpgradeZero-Downtime Gerrit Code Review Upgrade
Zero-Downtime Gerrit Code Review Upgrade
 

Recently uploaded

Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDThiyagu K
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfJayanti Pande
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfAyushMahapatra5
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajanpragatimahajan3
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxVishalSingh1417
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Sapana Sha
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room servicediscovermytutordmt
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Disha Kariya
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...fonyou31
 

Recently uploaded (20)

Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdf
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajan
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room service
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
 

Gerrit Code Review

  • 1. Main sponsor Gerrit Luca Milanesio
  • 2. Who’s that guy ? review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 3. 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
  • 4. Agile and continuous integration • Who is using CI ? … raise your hand !!!! • Good or bad ? •Why ? review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 5. 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 more review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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 bar review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 10. 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
  • 11. 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
  • 12. 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 Triggers review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 13. Gerrit: high level workflow CI Build: OK master A1 review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 14. Gerrit: high level workflow CI Build: OK master A1 clone local A1 master review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 15. Gerrit: high level workflow CI Build: OK master A1 clone local A1 C2 master review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 16. Gerrit: high level workflow CI Build: OK master A1 C2 refs/for/master clone push local A1 C2 master review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 17. Gerrit: high level workflow CI Build: OK master A1 Verified: -1 (build failed) C2 refs/for/master clone push local A1 C2 master review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 18. 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* master review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 19. 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* master review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 20. 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* master review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 21. 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* master review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 22. 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-review review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 23. See Gerrit “live” in action review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 24. 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
  • 25. 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/signup review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 26. 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
  • 27. 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/newrepo review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 8. Verify change against CI review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 32. 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-set review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 33. 10. Change-Id is validated against CI • Request code-review review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 34. 11. Review and comment changes review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 35. 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 master review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 36. 13. Master build is triggered … SUCCESS !! review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 37. … 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 integration review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 38. 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: @lucamilanesio review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 39. BACKUP review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 40. 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
  • 41. Define groups and members Admin > Groups review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 42. 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 hirarchically review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 43. Define project access rights per refspec Admin > Projects > 33degree > Access review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 44. Assign access rights to Groups review.GerritForge™.com Copyright © 2012 – LMIT Software
  • 45. … and Gerrit replication Remote gerrit or git Remote gerrit or git Master gerrit review.GerritForge™.com Copyright © 2012 – LMIT Software