Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GitHub, Gerrit, Hudson(Jenkins) workflow

I'm just getting started using GitHub, Gerrit, and Hudson(Jenkins) together. And I need some thoughts on workflow.

We'd like to use GitHub as our main remote repo. We'd like to use Gerrit primarily for code reviews, but also for build triggers in Hudson.

At the moment, though, I'm having some trouble thinking through the workflow for this and would like to hear what others have done themselves. Thoughts?

like image 544
Josh Smith Avatar asked Sep 16 '10 06:09

Josh Smith


People also ask

How Jenkins works with Gerrit?

To achieve this, a Jenkins job is configured to clone the changes from Gerrit, analyze the project with CodeChecker and publish (as comments in Gerrit) the issues found in the changed files. Based on the result of the analysis, the job also sets the Code-Review and Verify labels in Gerrit Review.

Does Gerrit work with github?

Git is an open-source, version control tool created in 2005 by developers working on the Linux operating system; GitHub is a company founded in 2008 that makes tools which integrate with git. You do not need GitHub to use git, but you cannot use GitHub without using git.

What is Git Gerrit and Jenkins?

Gerrit is a self-hosted pre-commit code review tool. It serves as a Git hosting server with option to comment incoming changes. It is highly configurable and extensible with default guarding policies, webhooks, project access control and more. What is Jenkins? An extendable open source continuous integration server.


2 Answers

We are using github, gerrit and jenkins (successor of hudson). We tie it together with redmine for bugtracking.

Prior to gerrit, we were using github as the primary development repository and developers had commit access. Now that we have gerrit running, github is only used as our publish repository and only the gerrit user has access to push to github.

workflow:

  1. developer checks out source from github.
  2. developer makes changes.
  3. developer pushes to gerrit.
  4. gerrit sends change notice to jenkins for integration test.
    • jenkins pulls changes directly from gerrit git server.
    • on pass, jenkins adds +1 to gerrit review, passes review to other developers.
    • on failure, jenkins adds -1 to gerrit review
    • pass/fail status pushed to redmine
  5. other developers review change, approve (+2)
  6. gerrit commits changes to github repository.
    • github hook notifies redmine of updates.
    • redmine pulls changes from github, parses commit messages for ticket information.
  7. developer fetchs changes from github ... back to 2. [EDIT]: we switched to pulling directly from gerrit. Github remains as a mirror for pulling production sources.

Missing pieces:

  1. piece to tie gerrit review to/from bug tracking.
like image 156
spazm Avatar answered Sep 20 '22 15:09

spazm


I haven't directly used Gerrit, but I like the idea of intermediate and specialized repo between:

  • your developer's repos
  • the central GitHub remote repo

So you need to determine what you want to publish in the remote GitHub repo:

  • code to be reviewed (meaning a local Gerrit webapp would pull the GitHub code to examine)
  • code that has been reviewed (meaning you publish first your commits to Gerrit, and after code review, you push them to GitHub)

The second workflow is closer to what Google Android Projects follows with Gerrit.

In both cases, an intermediate local repo for Gerrit to examine is needed.

like image 30
VonC Avatar answered Sep 16 '22 15:09

VonC