BayLisa Sort But Cool
June 14, 2012
Robert Harker
Sr. Service Engineer, Yahoo! Sports
harker@harker.com
(Up arrow, down arrow to move between slides)
Contents
Robert Harker
Currently a Sr. Service Engineer at Yahoo! Sports
On a team of 4 SEs managing ~3,000 hosts
Active in the OpenStack and cloud computing community
Yahoo! Sports has adopted an agile development environment:
Sports bases our work around a scrum team that includes Devel, QE and SE
Sports works on weekly sprints which include new features and bug fixes
Sports pushes a new release to production every week
Jenkins has been key for build, test and deploy automation
Jenkins can automatically:
Trigger builds on events like SVN check-ins
Trigger software tests when build completes
Update system configuration information
Automatically deploy to integration and test environments
Monitor external jobs
Notify via email, IRC or IM job status and results
Manually deploy to production environments
Tight integration with SVN/git for traditional builds
Tight integration with Mavin for Java builds
JUnit/TestNG test reporting: tabulated, summarized, and historical
Distributed builds: build slaves to speed up builds
Plugins for different build, deploy, reporting and 3rd party tools
Can be deployed in a servlet container like Tomcat
No database or external applications required
Can be configured:
Entirely using its web GUI with error checking
By editing its XML config files
Via its RESTfull API
Because of this Sports has a 3 step build process:
- A Jenkins job to discover if changes have been made,
- Recomple the code and build the new packages
A Jenkins job to install the packages in generic chroot environments
A Jenkins job to update the "roles" and create a deployment tag
Sports uses Jenkins to automate our test suite:
Daily regression tests
Periodic and on demand smoke tests
Jenkins automatically runs smoke tests as part of automated deploy jobs
Smoke tests allow Ops to validate basic functionality after a deploy
Jenkins uses the same deploy process for:
A full install to reimaged host
Updates of farms of hosts
Jenkins applies a "tag" to all the hosts being upgraded
Jenkins then does a generic update of that tag on all the hosts
Jenkins uses the same deploy procedure across all of our environments
Avoids problems with differences between the environments
Jenkins uses the same deploy procedure for bare metal restores and daily pushes
Jenkins can restore a host or an environment quickly and consistently
Robert Harker
Sr. Service Engineer
Yahoo! Sports
harker@harker.com