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:
- developer checks out source from github.
- developer makes changes.
- developer pushes to gerrit.
- 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
- other developers review change, approve (+2)
- gerrit commits changes to github repository.
- github hook notifies redmine of updates.
- redmine pulls changes from github, parses commit messages for ticket information.
- 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:
- piece to tie gerrit review to/from bug tracking.