290 likes | 676 Views
Continuous Integration + OpenStack. A worthy goal or a fool’s errand?. Who Am I?. Brian Lamar Public Cloud Deployments OpenStack contributor since Wed Feb 16 16:06:47 2011 Ansible Puppet Python. What is “Continuous Integration” and how does it apply to OpenStack ?.
E N D
Continuous Integration + OpenStack A worthy goal or a fool’s errand?
Who Am I? • Brian Lamar • Public Cloud Deployments • OpenStack contributor since WedFeb 16 16:06:47 2011 • Ansible • Puppet • Python
What is “Continuous Integration” and how does it apply to OpenStack?
What We’re Not Talking About (Right Now) Continuous Delivery Continuous Deployment
What are the benefits of Continuous Integration? OpenStack always works Allows for more frequent deployments
Practices of Continuous Integration Source:http://martinfowler.com/articles/continuousIntegration.html Maintain a Single Source Repository Automate the Build Make Your Build Self-Testing Everyone Commits to the Mainline Every Commit Should Build the Mainline on an Integration Machine Keep the Build Fast Test in a Clone of the Production Environment Make it Easy for Anyone to Get the Latest Executable Everyone Can See What’s Happening Automate Deployment
Maintain a Single Source Repository pbr>=0.6,!=0.7,<1.0 SQLAlchemy>=0.7.8,<=0.9.99 amqplib>=0.6.1 ... python-keystoneclient>=0.7.0 Install dependencies from pip New Nova Commit Should be from git and not pip! • review.openstack.org • Jenkins • Zuul • Constant interoperability between projects
Automate The Build • DevStack for “basic” deploys • 3rd party voting bots for everything else
Make Your Build Self-Testing • Unit / Integration tests included • Tempest • No hard requirements
Everyone Commits to the Mainline Every Day • No easy way to enforce • No consensus on what a small patch is
Every Commit Should Build the Mainline on an Integration Machine • We do this
Keep the Build Fast • Project test suites are still slow • Not sure this really matters
Test in a Clone of the Production Environment • 3rd party voting bots
Make it Easy for Anyone to Get the Latest Executable • No packages produced upstream on each commit • No consistent release for PyPI packages • python-*client
Everyone Can See What’s Happening • Great gate + 3rd party gate • 3rd party bot output requirements • Information overload
Automate Deployment • No official deployment method • What is a deployment? • Left to 3rd party deploy bots
What is Rackspace doing now? Daily pulls of upstream Merge our custom coderepositories (plypatch) Build custom virtual environments Run unit tests Build tarball packages Deploy tarball packages Run tests Promote from CI -> Preproduction Run tests Staggered production deployments
RACKSPACE® HOSTING | WWW.RACKSPACE.COM It takes us ~21 days choose a release branch… then ~45 days before we look at the upstream code again.
Meet Our Environments ~ 40,000 things to deploy to CI QE Pre-Production Network Dev London Dulles (VA) Dallas Chicago Sydney Hong Kong
So, what takes so long? • 90% of my time is identifying and fixing issues with… • Issues our code caused in deployment • Our Jenkins infrastructure • Our packaging process • Our deployment process • Integration issues with • Billing • Auth • Others
How do we improve? Stop carrying our own patches Stop carrying our own patches Stop carrying our own patches Packaging upstream Deployment methods upstream (?)
Why do we have custom patches? • Speeds development time • But at what cost? • Proprietary features • Please no • Proprietary integration • This makes sense
Allowing for Proprietary Integration Plugins Configuration options Billing system story Developers are going to hate me
Going Forward Into Juno • For Rackspace • Stop carrying patches • Encourage plugable code • Comment on Gerrit with our deployment test results • For OpenStack • Talk about official deployments • Upstream packaging • Project interoperability • Strongly encourage smaller commits • Keep encouraging tests
Fun Reads Continuous Deliveryby Jez Humble and David Farley The Phoenix Project by Gene Kim, Kevin Behr, and George Spafford
RACKSPACE® HOSTING | 5 MILLINGTON ROAD | HAYES, UNITED KINGDOM UB3 4AZ UK SALES: +44 (0)20 8712 6507 | UK SUPPORT: 0800 988 0300 | WWW.RACKSPACE.CO.UK