SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Luca@gerritforge.com
http://www.gerritforge.com
Twitter: @gitenterprise
GitHub plugin for …
Luca Milanesio
GerritForge
gerritGerrit Code Review
Platinum Sponsor
2 .io
About Luca
• Luca Milanesio
Co-founder of GerritForge
• over 20 years of experience
in Agile Development
SCM and ALM worldwide
• Contributor to Jenkins
since 2007 (and previously Hudson)
• Git SCM mentor
for the Enterprise since 2009
• Contributor to Gerrit Code Review community since 2011
3 .io
About GerritForge
Founded in 2009 in London UK
Mission: Agile Enterprise
Products:
4 .io
Agenda
 Fork+Pull request or Change review ?
 People says …
 My experience say …
 Plugging two worlds together
 echo "github" | sed -e "s/git/gerrit/"
 Pull requests and Repo replication
 What do YOU think ?
5 .io
Two divided review worlds
BRANCH
+
PULL
REQUEST
CHECKOUT
+
AMEND
6 .io
Fork + Pull request
GitHub BitBucket GitLab Gitorious + others …
> 10M repositories > 4M users
SourceRepo
mastera1c 2df f9a
fork
masterdec 6fa 7a1
7 .io
Change review (rebase example)
Gerrit GitBlit
+ others?
SourceRepo
mastera1c 2df 7a1
dec 6fa 7a1 changes/27/1627/*
amend amend
8 .io
Two worlds at a glance
1. BRANCH
2. SCORE THE
BRANCH
3. MERGE ALL
COMMITs in
BRANCH
1. CHECKOUT
2. SCORE THE
COMMIT
3. MERGE ONLY the
REVIEWED
COMMIT
9 .io
WHAT PEOPLE
SAY ?
10 .io
There are two fundamental problems with single-
patch review systems:
1. They encourage lumping at-best-weakly-related
changes together.
2. They encourage you to hide your history.
[http://bit.ly/1hhQkcA]
The pull-request system looks like an incredible
easy way to contribute to any project hosted on
Github [but] doing any proper and useful
contribution to a software is never done right the
first time.
But as a software maintainer you'll end up with
pull-request you'll never get finished unless you
wrap things up yourself.
[http://bit.ly/1o7HIb6]
A big advantage in Github's favor is the number of
developers that are familiar with it compared to
Gerrit.
Gerrit can be popular with Git power-users, but
friction-free use of it requires intermediate or
advanced git knowledge, and tolerance of a steep
learning curve.
[http://bit.ly/1cJV8IJ]
I have no problem with people using github as a
hosting site, but in order for *me* to pull from
github, you need to
(a) make a real pull request […]: real explanation,
proper email addresses, proper shortlog, and
proper diffstat.
(b) since github identities are random, I expect
the pull request to be a signed tag
[http://bit.ly/1iONQ4L]
11 .io
MY OWN
(OpenSource +
Enterprise)
[humble]
EXPERIENCE …
12 .io
Review model
DO NOT make git bisect + git cherry-pick useless
DO NOT throw commits over the fence
(e.g. “I’ve made the pull request, now it’s up to you”)
13 .io
Governance
DEFINE rules for your project
TRUST your identities and roles
14 .io
Social engagement
MAKE your project visible
MAKE collaboration easy and fun
15 .io
Growth
PLAN for collaboration model to scale
AVOID explosion of forks and pending pull-requests
16 .io
Can we take both worlds ?
+ = ?
17 .io
GitHub plugin for Gerrit Code Review
https://gerrit-review.googlesource.com/#/admin/projects/plugins/github
1. Imports Pull Requests  Gerrit Changes / Topics
2. Reuses GitHub identity using Gerrit auth rules
3. Replication: keeps presence on http://github.com
4. Prevents explosion of unmanaged forks
5. Avoid GitHub spamming  one-email-per-change
18 .io
Gerrit and GitHub? Who is ever gonna use it?
June 2014 Statistics
select count(*) from accounts = 1664 users
select count(*) from changes = 3654 changes
select count(*) from patch_sets = 4720 patch-sets
find . -name '*.git' | wc –l = 5022 repositories
du -s -h git = 140 GBytes
19 .io
THIS IS COOL !
How can use it ?
20 .io
SPEEDY WAY
http://GerritHub.io/login
21 .io
DEMO TIME
[http://www.youtube.com/watch?v=jeWTvDad6VM]
22 .io
HACKY WAY
Build the plugin from source
23 .io
Step#1 - GitHub OAuth 2.0 application keys
https://github.com/settings/applications/new
Your server URL
(hostname / port Gerrit
will listen to)
OAuth 2.0 callback URL
is
Your server URL +
/oauth
24 .io
Step#2 – Get OAuth Client-Id / CLient-Secret
GitHub OAuth 2.0 credentials for Gerrit
integration
25 .io
Step#3 – Download Gerrit 2.10 (master)
http://ci.gerritforge.com/job/Gerrit-master
26 .io
Step#4 – build GitHub plugin
 git clone https://gerrit.googlesource.com/plugins/github && cd github
 mvn install
[…]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.755s
[INFO] Finished at: Sat Mar 15 19:16:23 GMT 2014
[INFO] Final Memory: 57M/449M
[INFO] ------------------------------------------------------------------------
27 .io
Step#5 – install OAuth filter and GitHub plugin
> export GERRIT_SITE=/var/gerrit
> mkdir –p $GERRIT_SITE/lib
> cp github-oauth/target/github-oauth*.jar $GERRIT_SITE/lib
> mkdir –p $GERRIT_SITE/plugins
> cp github-plugin/target/github-plugin*.jar $GERRIT_SITE/plugins
28 .io
Step#6 – Gerrit setup + replication + singleusergroup
> cd $GERRIT_SITE && java –jar release.war init –d $GERRIT_SITE
*** Gerrit Code Review 2.9-rc1-779-g90fac34-dirty
***
[…]
*** User Authentication
***
Authentication method ? HTTP
Get username from custom HTTP header ? Y
Username HTTP header ? GITHUB_USER
*** Plugins
***
Install plugin singleusergroup version v2.9-rc2-536-g79393b2 [y/N]? y
Install plugin replication version v2.9-rc2-536-g79393b2 [y/N]? y
29 .io
Step#7 – Configure GitHub integration
[…]
*** GitHub Integration
***
GitHub URL ? https://github.com
Use GitHub for Gerrit login ? Y
ClientId ? 732819a7b9c9d9a98
ClientSecret ? 6271627a6a7s6s718173642718a9bcacd
HTTP Authentication Header [GITHUB_USER]:
30 .io
Replay presentation: http://slideshare.net/lucamilanesio
Sign-in: http://gerrithub.io/login
Gerrit book: http://gerrithub.io/book
Learn more about
20% OFF Book discount for
33 Degree.org User Conference
Book CODE: dg7jnZ
eBook CODE: Wi86Zh

Weitere ähnliche Inhalte

Was ist angesagt?

Git and GitFlow branching model
Git and GitFlow branching modelGit and GitFlow branching model
Git and GitFlow branching modelPavlo Hodysh
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to GitLukas Fittl
 
GitHub Actions with Node.js
GitHub Actions with Node.jsGitHub Actions with Node.js
GitHub Actions with Node.jsStefan Stölzle
 
Ozone and HDFS's Evolution
Ozone and HDFS's EvolutionOzone and HDFS's Evolution
Ozone and HDFS's EvolutionDataWorks Summit
 
Gitops: the kubernetes way
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes waysparkfabrik
 
Red Hat multi-cluster management & what's new in OpenShift
Red Hat multi-cluster management & what's new in OpenShiftRed Hat multi-cluster management & what's new in OpenShift
Red Hat multi-cluster management & what's new in OpenShiftKangaroot
 
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech TalkArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech TalkRed Hat Developers
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideRohit Arora
 
GitOps is the best modern practice for CD with Kubernetes
GitOps is the best modern practice for CD with KubernetesGitOps is the best modern practice for CD with Kubernetes
GitOps is the best modern practice for CD with KubernetesVolodymyr Shynkar
 
Learning git
Learning gitLearning git
Learning gitSid Anand
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDSunnyvale
 
DevOps with GitHub Actions
DevOps with GitHub ActionsDevOps with GitHub Actions
DevOps with GitHub ActionsNilesh Gule
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash CourseNilay Binjola
 
K8s security best practices
K8s security best practicesK8s security best practices
K8s security best practicesSharon Vendrov
 

Was ist angesagt? (20)

GIT INTRODUCTION
GIT INTRODUCTIONGIT INTRODUCTION
GIT INTRODUCTION
 
Git and GitFlow branching model
Git and GitFlow branching modelGit and GitFlow branching model
Git and GitFlow branching model
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Git & GitLab
Git & GitLabGit & GitLab
Git & GitLab
 
GitHub Actions with Node.js
GitHub Actions with Node.jsGitHub Actions with Node.js
GitHub Actions with Node.js
 
Introducing GitLab
Introducing GitLabIntroducing GitLab
Introducing GitLab
 
Ozone and HDFS's Evolution
Ozone and HDFS's EvolutionOzone and HDFS's Evolution
Ozone and HDFS's Evolution
 
Gitops: the kubernetes way
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes way
 
Red Hat multi-cluster management & what's new in OpenShift
Red Hat multi-cluster management & what's new in OpenShiftRed Hat multi-cluster management & what's new in OpenShift
Red Hat multi-cluster management & what's new in OpenShift
 
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech TalkArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guide
 
GitOps is the best modern practice for CD with Kubernetes
GitOps is the best modern practice for CD with KubernetesGitOps is the best modern practice for CD with Kubernetes
GitOps is the best modern practice for CD with Kubernetes
 
Learning git
Learning gitLearning git
Learning git
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
 
DevOps with GitHub Actions
DevOps with GitHub ActionsDevOps with GitHub Actions
DevOps with GitHub Actions
 
What Is Helm
 What Is Helm What Is Helm
What Is Helm
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
K8s security best practices
K8s security best practicesK8s security best practices
K8s security best practices
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 

Ähnlich wie Gerrit Code Review with GitHub plugin

GerritHub.io - present, past, future
GerritHub.io - present, past, futureGerritHub.io - present, past, future
GerritHub.io - present, past, futureLuca Milanesio
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHubNicolás Tourné
 
Github security bug bounty hunting
Github security   bug bounty huntingGithub security   bug bounty hunting
Github security bug bounty huntingvinoth kumar
 
Open up your platform with Open Source and GitHub
Open up your platform with Open Source and GitHubOpen up your platform with Open Source and GitHub
Open up your platform with Open Source and GitHubScott Graham
 
Git single branch
Git single branchGit single branch
Git single branchCarl Brown
 
Gerrit Code Review: how to script a plugin with Scala and Groovy
Gerrit Code Review: how to script a plugin with Scala and GroovyGerrit Code Review: how to script a plugin with Scala and Groovy
Gerrit Code Review: how to script a plugin with Scala and GroovyLuca Milanesio
 
Difference between Github vs Gitlab vs Bitbucket
Difference between Github vs Gitlab vs BitbucketDifference between Github vs Gitlab vs Bitbucket
Difference between Github vs Gitlab vs Bitbucketjeetendra mandal
 
Getting started With GIT
Getting started With GITGetting started With GIT
Getting started With GITGhadiAlGhosh
 
Git interview questions | Edureka
Git interview questions | EdurekaGit interview questions | Edureka
Git interview questions | EdurekaEdureka!
 
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
 
introductiontogitandgithub-120702044048-phpapp01.pdf
introductiontogitandgithub-120702044048-phpapp01.pdfintroductiontogitandgithub-120702044048-phpapp01.pdf
introductiontogitandgithub-120702044048-phpapp01.pdfBruceLee275640
 
Github Case Study By Amil Ali
Github Case Study By Amil AliGithub Case Study By Amil Ali
Github Case Study By Amil AliAmilAli1
 
Intro to Git, GitHub, and Devpost
Intro to Git, GitHub, and DevpostIntro to Git, GitHub, and Devpost
Intro to Git, GitHub, and DevpostAndrew Kerr
 
Introduction to git and Github
Introduction to git and GithubIntroduction to git and Github
Introduction to git and GithubWycliff1
 
Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)
Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)
Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)Mark Hamstra
 

Ähnlich wie Gerrit Code Review with GitHub plugin (20)

GerritHub.io - present, past, future
GerritHub.io - present, past, futureGerritHub.io - present, past, future
GerritHub.io - present, past, future
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
Github
GithubGithub
Github
 
Github security bug bounty hunting
Github security   bug bounty huntingGithub security   bug bounty hunting
Github security bug bounty hunting
 
Open up your platform with Open Source and GitHub
Open up your platform with Open Source and GitHubOpen up your platform with Open Source and GitHub
Open up your platform with Open Source and GitHub
 
Git single branch
Git single branchGit single branch
Git single branch
 
Gerrit Code Review: how to script a plugin with Scala and Groovy
Gerrit Code Review: how to script a plugin with Scala and GroovyGerrit Code Review: how to script a plugin with Scala and Groovy
Gerrit Code Review: how to script a plugin with Scala and Groovy
 
Giddy Up on GitHub
Giddy Up on GitHubGiddy Up on GitHub
Giddy Up on GitHub
 
Difference between Github vs Gitlab vs Bitbucket
Difference between Github vs Gitlab vs BitbucketDifference between Github vs Gitlab vs Bitbucket
Difference between Github vs Gitlab vs Bitbucket
 
Git hub visualstudiocode
Git hub visualstudiocodeGit hub visualstudiocode
Git hub visualstudiocode
 
Getting started With GIT
Getting started With GITGetting started With GIT
Getting started With GIT
 
Git interview questions | Edureka
Git interview questions | EdurekaGit interview questions | Edureka
Git interview questions | Edureka
 
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
 
introductiontogitandgithub-120702044048-phpapp01.pdf
introductiontogitandgithub-120702044048-phpapp01.pdfintroductiontogitandgithub-120702044048-phpapp01.pdf
introductiontogitandgithub-120702044048-phpapp01.pdf
 
Github Case Study By Amil Ali
Github Case Study By Amil AliGithub Case Study By Amil Ali
Github Case Study By Amil Ali
 
Intro to Git, GitHub, and Devpost
Intro to Git, GitHub, and DevpostIntro to Git, GitHub, and Devpost
Intro to Git, GitHub, and Devpost
 
GitHub Introduction
GitHub IntroductionGitHub Introduction
GitHub Introduction
 
Git and git hub basics
Git and git hub basicsGit and git hub basics
Git and git hub basics
 
Introduction to git and Github
Introduction to git and GithubIntroduction to git and Github
Introduction to git and Github
 
Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)
Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)
Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)
 

Mehr von Luca 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
 
Speed up Continuous Delivery with BigData Analytics
Speed up Continuous Delivery with BigData AnalyticsSpeed up Continuous Delivery with BigData Analytics
Speed up Continuous Delivery with BigData AnalyticsLuca Milanesio
 

Mehr von Luca Milanesio (20)

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
 
Speed up Continuous Delivery with BigData Analytics
Speed up Continuous Delivery with BigData AnalyticsSpeed up Continuous Delivery with BigData Analytics
Speed up Continuous Delivery with BigData Analytics
 

Kürzlich hochgeladen

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
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docxPoojaSen20
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxnegromaestrong
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...christianmathematics
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
An Overview of Mutual Funds Bcom Project.pdf
An Overview of Mutual Funds Bcom Project.pdfAn Overview of Mutual Funds Bcom Project.pdf
An Overview of Mutual Funds Bcom Project.pdfSanaAli374401
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxAreebaZafar22
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...KokoStevan
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 
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
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17Celine George
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxVishalSingh1417
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfMaking and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfChris Hunter
 

Kürzlich hochgeladen (20)

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
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
 
An Overview of Mutual Funds Bcom Project.pdf
An Overview of Mutual Funds Bcom Project.pdfAn Overview of Mutual Funds Bcom Project.pdf
An Overview of Mutual Funds Bcom Project.pdf
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).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
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfMaking and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdf
 

Gerrit Code Review with GitHub plugin

  • 1. Luca@gerritforge.com http://www.gerritforge.com Twitter: @gitenterprise GitHub plugin for … Luca Milanesio GerritForge gerritGerrit Code Review Platinum Sponsor
  • 2. 2 .io About Luca • Luca Milanesio Co-founder of GerritForge • over 20 years of experience in Agile Development SCM and ALM worldwide • Contributor to Jenkins since 2007 (and previously Hudson) • Git SCM mentor for the Enterprise since 2009 • Contributor to Gerrit Code Review community since 2011
  • 3. 3 .io About GerritForge Founded in 2009 in London UK Mission: Agile Enterprise Products:
  • 4. 4 .io Agenda  Fork+Pull request or Change review ?  People says …  My experience say …  Plugging two worlds together  echo "github" | sed -e "s/git/gerrit/"  Pull requests and Repo replication  What do YOU think ?
  • 5. 5 .io Two divided review worlds BRANCH + PULL REQUEST CHECKOUT + AMEND
  • 6. 6 .io Fork + Pull request GitHub BitBucket GitLab Gitorious + others … > 10M repositories > 4M users SourceRepo mastera1c 2df f9a fork masterdec 6fa 7a1
  • 7. 7 .io Change review (rebase example) Gerrit GitBlit + others? SourceRepo mastera1c 2df 7a1 dec 6fa 7a1 changes/27/1627/* amend amend
  • 8. 8 .io Two worlds at a glance 1. BRANCH 2. SCORE THE BRANCH 3. MERGE ALL COMMITs in BRANCH 1. CHECKOUT 2. SCORE THE COMMIT 3. MERGE ONLY the REVIEWED COMMIT
  • 10. 10 .io There are two fundamental problems with single- patch review systems: 1. They encourage lumping at-best-weakly-related changes together. 2. They encourage you to hide your history. [http://bit.ly/1hhQkcA] The pull-request system looks like an incredible easy way to contribute to any project hosted on Github [but] doing any proper and useful contribution to a software is never done right the first time. But as a software maintainer you'll end up with pull-request you'll never get finished unless you wrap things up yourself. [http://bit.ly/1o7HIb6] A big advantage in Github's favor is the number of developers that are familiar with it compared to Gerrit. Gerrit can be popular with Git power-users, but friction-free use of it requires intermediate or advanced git knowledge, and tolerance of a steep learning curve. [http://bit.ly/1cJV8IJ] I have no problem with people using github as a hosting site, but in order for *me* to pull from github, you need to (a) make a real pull request […]: real explanation, proper email addresses, proper shortlog, and proper diffstat. (b) since github identities are random, I expect the pull request to be a signed tag [http://bit.ly/1iONQ4L]
  • 11. 11 .io MY OWN (OpenSource + Enterprise) [humble] EXPERIENCE …
  • 12. 12 .io Review model DO NOT make git bisect + git cherry-pick useless DO NOT throw commits over the fence (e.g. “I’ve made the pull request, now it’s up to you”)
  • 13. 13 .io Governance DEFINE rules for your project TRUST your identities and roles
  • 14. 14 .io Social engagement MAKE your project visible MAKE collaboration easy and fun
  • 15. 15 .io Growth PLAN for collaboration model to scale AVOID explosion of forks and pending pull-requests
  • 16. 16 .io Can we take both worlds ? + = ?
  • 17. 17 .io GitHub plugin for Gerrit Code Review https://gerrit-review.googlesource.com/#/admin/projects/plugins/github 1. Imports Pull Requests  Gerrit Changes / Topics 2. Reuses GitHub identity using Gerrit auth rules 3. Replication: keeps presence on http://github.com 4. Prevents explosion of unmanaged forks 5. Avoid GitHub spamming  one-email-per-change
  • 18. 18 .io Gerrit and GitHub? Who is ever gonna use it? June 2014 Statistics select count(*) from accounts = 1664 users select count(*) from changes = 3654 changes select count(*) from patch_sets = 4720 patch-sets find . -name '*.git' | wc –l = 5022 repositories du -s -h git = 140 GBytes
  • 19. 19 .io THIS IS COOL ! How can use it ?
  • 22. 22 .io HACKY WAY Build the plugin from source
  • 23. 23 .io Step#1 - GitHub OAuth 2.0 application keys https://github.com/settings/applications/new Your server URL (hostname / port Gerrit will listen to) OAuth 2.0 callback URL is Your server URL + /oauth
  • 24. 24 .io Step#2 – Get OAuth Client-Id / CLient-Secret GitHub OAuth 2.0 credentials for Gerrit integration
  • 25. 25 .io Step#3 – Download Gerrit 2.10 (master) http://ci.gerritforge.com/job/Gerrit-master
  • 26. 26 .io Step#4 – build GitHub plugin  git clone https://gerrit.googlesource.com/plugins/github && cd github  mvn install […] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 7.755s [INFO] Finished at: Sat Mar 15 19:16:23 GMT 2014 [INFO] Final Memory: 57M/449M [INFO] ------------------------------------------------------------------------
  • 27. 27 .io Step#5 – install OAuth filter and GitHub plugin > export GERRIT_SITE=/var/gerrit > mkdir –p $GERRIT_SITE/lib > cp github-oauth/target/github-oauth*.jar $GERRIT_SITE/lib > mkdir –p $GERRIT_SITE/plugins > cp github-plugin/target/github-plugin*.jar $GERRIT_SITE/plugins
  • 28. 28 .io Step#6 – Gerrit setup + replication + singleusergroup > cd $GERRIT_SITE && java –jar release.war init –d $GERRIT_SITE *** Gerrit Code Review 2.9-rc1-779-g90fac34-dirty *** […] *** User Authentication *** Authentication method ? HTTP Get username from custom HTTP header ? Y Username HTTP header ? GITHUB_USER *** Plugins *** Install plugin singleusergroup version v2.9-rc2-536-g79393b2 [y/N]? y Install plugin replication version v2.9-rc2-536-g79393b2 [y/N]? y
  • 29. 29 .io Step#7 – Configure GitHub integration […] *** GitHub Integration *** GitHub URL ? https://github.com Use GitHub for Gerrit login ? Y ClientId ? 732819a7b9c9d9a98 ClientSecret ? 6271627a6a7s6s718173642718a9bcacd HTTP Authentication Header [GITHUB_USER]:
  • 31. Replay presentation: http://slideshare.net/lucamilanesio Sign-in: http://gerrithub.io/login Gerrit book: http://gerrithub.io/book Learn more about 20% OFF Book discount for 33 Degree.org User Conference Book CODE: dg7jnZ eBook CODE: Wi86Zh