About Jenkins ● Written in Java. ● Continuous Integration Software ○ Way to test code / functionality changes as they are introduced to your software. ○ Send out test results on pass/fail/other criteria. ● Gradually evolved into software to also help manage deployment. ● Tons of plugins ○ CVS/SVN/Git/Mercurial/Bazaar/etc. ○ Selenium, Phing ○ Notifications
Why not Jenkins ● Resource heavy ○ Better to have a separate server for it. ● Setup heavy ○ Setup server, ssh keys, etc. ● Code heavy ○ Code your deployment steps. ● Need to learn another language ○ Shell scripting ○ Python (Fabric) ■ Drush (aegir, drush_deploy) ○ Ruby (capistrano, whiskey_disk) ● Use other deployment tool ○ Chef/Puppet (Ruby? create deb/rpm packages?)
● Create test builds easily. ○ No need to ssh into the server(s). ○ No need to remember steps. ● Run tests easily ○ Get emails / web reports of results. ○ Sent out to entire team. ■ https://github.com/codedance/Retaliation ● Create production builds easily. ○ See points above. ○ Also allow for other team members to deploy changes without actually requiring server credentials. ● Easily create the builds. ○ Push of a button. ○ Cron task. ○ Only on code changes (automated). Why Jenkins
Who is it for? ● If you host your own websites. ○ Own set of servers (on hand, vps, dedicated, etc) ● Even if you're on Pantheon/Acquia, useful since you can test out your code locally before deployment. ● Great tool regardless of actual application. ○ Drupal, Wordpress, Django...doesn't matter. ● Not scared of some code.
Demo ● About demo ○ Using Barracuda in testing/production. (http://drupal. org/project/barracuda) ■ Aegir ■ Nginx ■ Various other things that I don't have to worry about. ■ ssh key to checkout git repo. ○ Jenkins / Fabric on build server. ■ Nginx for reverse-proxy and password auth. ● Only allow 'anonymous' user access to notify on git poll. ■ Small instance (256 megs) ■ ssh key to automatically log into testing/production.