Jenkins is amazing, I've spent part of the previous week putting together a POC installation on a Virtual Machine and the tests that I can run. There are plugins for Selenium and Grails and code review like codenarq and code coverage. With this we can automate tests to be performed before code is merged with develop. If our developers are following the appropriate steps, their code will pass with flying colors. If they are not following the appropriate steps, I save time and effort by having a robot (jenkins) remind them to test their code and that the code they are trying to submit fails.
git flow feature finish featureName
Also I don't want to only rely upon automated review. What if my developer didn't add the appropriate tests for his or her new feature. What if the poor code is syntactically perfect, but lacks good design decisions. The code review tools will catch a lot of these errors, but not all of them. Re-enter the original concept of code reviews. When your peers see your code, you code cleaner, smarter, more efficiently. Enter Gerrit, a code review system that automates the process of reviewing code. It sets up review tickets, and can be integrated with jenkins to allow jenkins to weight in a pass/fail based on the scripted tests. Reviewers can be setup for each developer and I can get emails when there is code for me to review. Upon successful review the code can be automatically merged back into our main development trunk.
So this is the task this week; put it all together. I have the proper pieces falling into place, now I need to make them match up. How do I interrupt the git-flow process to insert Gerrit? How do I make Gerrit preform the rest of the merge with develop if the reviewers and Jenkins approve?