1 / 29

Continuous Integration and Deployment using OpenStack

Continuous Integration and Deployment using OpenStack. Miguel Zuniga @ mikezuniga mzigavzquez@ebay.com. About ebay inc. eBay Inc. enables commerce by delivering flexible and scalable solutions that foster merchant growth.

shaina
Download Presentation

Continuous Integration and Deployment using OpenStack

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Continuous Integration and Deployment using OpenStack Miguel Zuniga @mikezuniga mzigavzquez@ebay.com

  2. About ebayinc eBay Inc. enables commerce by delivering flexible and scalable solutions that foster merchant growth. With 145 million active buyers globally, eBay is one of the world's largest online marketplaces, where practically anyone can buy and sell practically anything. With 148 million registered accounts in 193 markets and 26 currencies around the world, PayPal enables global commerce, processing almost 8 million payments every day. eBay Enterprise is a leading provider of commerce technologies, omnichannel operations and marketing solutions. It serves 1000 retailers and brands.

  3. Agenda • Enter Fluo (CI/CD) • Fluo Flow • Fluo Code Replication • Packages, Artifacts, <your term here> • Distribution of Packages • Infrastructure as Code • Deployment to Production • Screenshots • Roadmap Continuous Integration and Deployment using OpenStack

  4. Enter Fluo (CI/CD) From begin to end… how code goes to deployment.

  5. At the beginning Basic system running • Gerrit • Jenkins • Web server Requirements • Single Interface • Scalable • Simple to use • Developer Friendly • Generic Continuous Integration and Deployment using OpenStack

  6. Fluo and the CICD configuration file • What is Fluo? • WebUI and API • Single pane of glass • Cloud instance prov and decomm • Allows user’s to configure the system • RBAC • How it works? • Jenkins through API • Gerrit through API • Uses ZMQ to communicate with workers which do non-API actions • Recycle slaves or provisions them on the fly at the moment of job execution. • What is the cicd configuration file? • Specification and requirements files • How the developers instruct the system what to do (run unittests, how to build packages, install dependencies, more…). • Example Continuous Integration and Deployment using OpenStack

  7. Fluocicd configuration file language: bash package_install:   apt:     - build-essential     - ruby1.9     - ruby1.9-dev     - mysql-server     - mysql-dev   gem:     - rails -v=4.0.3     - zmq     - mysql2 before_review:   - /etc/init.d/mysql-server start   - mysql -u root < database.sql   - RAILS_ENV=test rakedb:migrate   - RAILS_ENV=test rakedb:test:load review_script:   - rake test test/models/user_test.rb   - rake test test/models/session_test.rb   - rake test test/models/post_test.rb notification:   email:     - myemailuser1@email.com Continuous Integration and Deployment using OpenStack

  8. Fluo Continuous Integration and Deployment using OpenStack

  9. Fluo Flow A step by step journey of a code change.

  10. Basic Workflow • Fluo basic workflow has 6 different stages/step • Review • Approval • Build • Integration • Release • Periodic • At each stage/step Fluo will: • Build a cloud instance • Read the configuration file • Execute the scripts defined • Report back status • Destroy the instance • Customs workflows can be created by users. Continuous Integration and Deployment using OpenStack

  11. Code Quality = Must have… Review, Approval, Build The rest of the flow… Integration… Release… Periodic. Continuous Integration and Deployment using OpenStack

  12. Fluo Code Replication One project… 2 projects… Multiple projects.. Best Practices.

  13. Github, Internal Githuband your own Git repository. Some points to consider: • Categorize your code • Will it be open sourced? • Is it private for our team? • Is it private for our company? • Do we need mirrors? • Always use ssh keys • Standards • User which will be replicating • Replicate Branches or maybe not… Continuous Integration and Deployment using OpenStack

  14. Packages, Artifacts, <your term here> How do you want to wrap it out? RPM? Debs? Tar?

  15. When and where do I create my packages? Things to consider. • Jenkins slaves will build the packages. • Make sure all your dependencies are in your cicdconfig file. • Prepare your environment with the package_install and before_{stage} sections. • Build your package at the {stage}_script section. • Define a versioning standard (0.0.x for test packages, x.y.0 for production packages) Two main stages were created for build purposes. • Build stage • Use commit number + time in secs as package version. • Release stage • Use git tag as package version. Continuous Integration and Deployment using OpenStack

  16. Distribution of Packages Shipping the code to different locations.

  17. Shipping Packages to a Central Point • Use simple and secure methods. • Secure Object storage • Rsync + SSH • SCP • Mrepo (if you are RPM Based) • Replication is done every 5 mins. Replicate… Replicate and Replicate. Continuous Integration and Deployment using OpenStack

  18. Infrastructure as Code Controlling and Managing what is your Infrastructure doing.

  19. Configuration Management • At the moment we use Puppet. • Puppet Code will also go through Fluo. Continuous Integration and Deployment using OpenStack

  20. Deployment to Production So it’s GO time and you have green light.

  21. It’s GO time • Centralize your configuration management code • Keep it in sync (pull from the repository every 2 or 5 mins). • Tag your Releases with a chronological meaning and keep a standard • OK • 1.1.0 • 1.2.0 • 1.10.0 • NOT OK • V1.0 • Beta1.0.1 • 1.2 • Remember the TAG goes into the name of the package and its how your package manager identifies which package should be installed on an upgrade. • Automatic Deployment or Scheduled Deployment? Continuous Integration and Deployment using OpenStack

  22. Some Fluo screens

  23. Continuous Integration and Deployment using OpenStack

  24. Continuous Integration and Deployment using OpenStack

  25. Continuous Integration and Deployment using OpenStack

  26. Continuous Integration and Deployment using OpenStack

  27. Roadmap

  28. The Future of Fluoat eBay Inc. • CICDaaS (CICD as a Service). • Integrate with other CM tools (chef, salt). • Completely control of CM tools through Fluo. • Container support (OpenVZ/Docker). • Add block storage as option to store packages/artifacts. • Ironic, Cobbler, Foreman, Razor integration. • Jenkins? Zuul? • Improve UI. Continuous Integration and Deployment using OpenStack

  29. Thank you. Yes. We are hiring! dl-ebay-cloud-hiring@corp.ebay.com

More Related