Git & Cerberus
Looking at this past article is a good start as most of the problems to be solved are similar or the same.
As far as significant differences between that blog post and now, I'd say the most important are:
- There is now no longer any reason not to include db:migrate in your automated build targets. This means you can audit both that migrations are checked in alongside the code that requires them, as well as their accuracy.
- Most of the problems of user environments and sudoing persist. We had to give the "git" user sudoer permissions to fire off the git build. The post-commit hook was virtually unchanged, however!
- Cerberus has a funky patch applied to it that expects a version of check_auth_args that is specific to ruby versions from circa December 2007. If you see a problem with check_auth_args in your cerberus error.log, one easy way to resolve the problem is to remove the "type" parameter being passed to check_auth_args in the do_start method of cerberus' net_smtp_tls_fix.rb file. (I think that is right, but I am going from memory. The offending file will show up in the stack trace.)
- Cerberus doesn't quite understand Git as well as it should. We get notifications for the commit prior to the commit that triggers the notification, e.g. if commit 478 is fine, and commit 479 breaks the build, the email sent out will accurately be sent out when 479 is committed, but it will detail 478. Likewise if 480 fixes the problems in 479, and is committed, the email will get sent out saying the build is fixed when 480 is committed, but the email sent will contain the details about 479. This isn't too big a problem for our setup since our commits are also reported to an internal jabber server.
Also we don't have rcov running at the moment. This is subobtimal but not a huge priority, we'll probably get it working again soon, and I do not expect it will cause too many problems.