By Jonathann Zenou, Ravello Systems
Ravello Systems has relied heavily on Jenkins since the early days. During the company's first four years, their Jenkins setup changed and evolved to the point that it was out of control. Ravello decided to take all the experience from those years and create a new and improved Jenkins setup. This session will share the lessons that were learned the hard way - and explain how the CI process was optimized. The process of re-doing the CI mechanism for a large always developing group will be discussed, as well as mechanisms for revision control in Jenkins, job infrastructure and architecture guidelines for maximal flexibility and reuse and various other considerations. The overall continuous integration and testing strategies - which are completely cloud-based and cover all our varied components (from a hypervisor through networking and storage layers, distributed backend systems and all the way to an HTML5-based UI and a cross platform client side application) - will be described.
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkins Rebuild
1. Optimizing Your CI: Lessons Learned from a Successful
Jenkins Rebuild
Europe, June 2015
Jonathann Zenou @zenoujohn
2. Footer
#jenkinsconf
Greetings fellow humans
• Hi, my name is Jonathann
• Living in Tel Aviv, Israel
• Originally from Marseille, France
• Leading the DevOps effort at Ravello Systems
• jonathann.zenou@ravellosystems.com
2
8. #jenkinsconf
Footer
Jobs Leftovers
• Causes full disk
• Workspace Cleanup Plugin
• Can pollute your maven repo or npm cache
• Solution needed : a new clean environment for every job
8
20. #jenkinsconf
Footer
Using Docker in Jenkins
• Using Jenkins Docker plugin
• Dedicated Docker host for each team
• Hosts machine capabilities are a function of team size and
requirements
• All images on all hosts
• Problems solved : jobs leftovers and resource distribution
20
25. #jenkinsconf
Footer
Security
• Using Jenkins Google Login plugin
• Coupled with Matrix Authorization Strategy plugin
• 2-Factor authentication
• Open our Jenkins to the world
25
32. #jenkinsconf
Footer
Jobs data sharing
• Solution needed: an interface/service that will store data
that will be accessible from all the jobs
• Using Jenkins Global Variable String Parameter Plugin
• Cannot alter them from a job
• But you can using Groovy …
32
34. #jenkinsconf
Footer
Jobs data sharing
• Keep a global parameter for each of product stable version
• Let all the other jobs use these values
• Change the global parameter value of a product stable
version automatically when this product passes a green CI
• Gist link: https://gist.github.com/johnyzed/2af71090419af2b20c5a
34
35. #jenkinsconf
Footer
CI at Ravello Systems
35
build
+
unit
tests
environment
creation
code
deployment
test suites
stop
environments
Artifactory
log collection
38. #jenkinsconf
Footer
The pieces are ready
• What Do Developers Want ?
• Blackbox
• No duplication
• C.D.R.S
• Single form, with a lot of triggers
• Using Multijob Plugin
38
39. #jenkinsconf
Footer
Jobs sandbox
• Improving a job without:
• Breaking it
• Stopping other people using it
• Solution needed: a parallel Jenkins environment almost
identical to our production Jenkins environment to test the
new changes on
39
40. #jenkinsconf
Footer
Jobs sandbox
• Jenkins environment blueprint on Ravello Systems
• Using Ansible:
• git clone
• minor changes
• Running regular jobs
• All that orchestrated from a Jenkins job
40
45. #jenkinsconf
Footer
Take-aways
• Ask your developers how to make their life easier
• Don’t be afraid to break things
• Culture
• Follow @jenkins_release
• Follow @devopsreactions
45
49. #jenkinsconf
Footer
Please Share Your Feedback
• Did you find this session valuable?
• Please share your thoughts in the
Jenkins User Conference Mobile App.
• Find the session in the app and click
on the feedback area.
49