On my recent client engagement, I proposed to implement a pre-submit build so developers can get some confidence in their change before they ‘push to master’ (git speak). My manager asked me if I could prototype the solution, but there was one problem: I was not well versed with the particular technologies they were using, specifically git, Jenkins and Gerrit. On top of that, all of my billable time was already allocated to ongoing projects. Still, due to the open source nature of the tools I’ve decided that trying this on a weekend was a good idea and will likely come in handy on future projects.
Lucky for me a few weeks back I was introduced to AirPair and decided to see if it could really work in my situation. I knew that they would have no trouble finding a Rails expert, but someone who knew the Gerrit-Jenkins plugin that supported pre-submit builds? — that I was not sure about.
Amazingly enough within 2 days AirPair found Manuel Doninger (https://twitter.com/mdoninger). I checked out his profile and confirmed that he understood my specific goals.
For this exercise, I prepared a VM on AWS and installed Java, git, Maven, and Jenkins. I decided to use a tiny Maven sample project I keep on github.com/vydra. I was hoping that I could at least get the Jenkins/git integration working, but ran out of time.
I also invited my longtime friend and frequent collaborator, Jeff Miller, to join us. When we we both at Google many years ago, we designed and implemented a CI server from scratch, so this is a space both of us care about.
Manuel, Jeff and I connected via the Google Hangout hosted by Airpair. Manuel quickly helped me to fix the basic Jenkins/Git job setup and we proceeded to install Gerrit and then the Gerrit-Jenkins plugin. Manuel guided me at every step — it was obvious that he was very well prepared and was able to diagnose out error message we got very quickly and keep making forward progress. At some point he sent me the URL for his Jenkins setup so I could quickly compare and copy some of the configuration settings. All, in all, even with having to fix my initial setup we were done in 1.5 hours. I estimate that I could have easily spent 20-30 hours researching this solution and figuring out tricky configuration options.
In summary, this was an amazing experience. I have been doing remote pair-programming since 1998, but I was still as excited as when I did it for the first time. I was done by 10:30am on a Sunday and was able to enjoy the rest of the day with my family. Had I attempted this on my own, it could have easily taken a good chunk of several weekends — time that I just did not have.
The entire session is documented here: http://www.youtube.com/watch?v=ZjWwskiA2E0&feature=youtu.be&noredirect=1 Its not the most exciting video to watch, but will give a good idea of how AirPair works.
Check out the AirPair blog for more success stories.