2. What do we mean by Scale?
Master Server
Slave servers
Job Configuration
Jenkins - A complete solution 25/8/2014
Agenda
3. • Large number of projects
• Multiple branches of code
• Various Languages and technologies
(Java, JS,Ruby, C#, Python)
• Elasticity (varying amount of work)
• Large number of developers
5/8/2014 Jenkins - A complete solution 3
What do we mean by Scale?
4. • Try to keep webui responsive and stable
• Think about not running jobs on it due to
resource usage
• Use a powerful VM at it (IO is not an issue
though)
• Managing jobs and slaves takes a lot of
resources
• Consider proxying static content via NGINX or
Apache
5/8/2014 Jenkins - A complete solution 4
Master Server best practices
5. Manage/Backup configuration via Source
Control
1. Make $JENKINS_HOME a checkoup in svn/git
($JENKINS_HOME -
plugins,users,jobs,builds,configuration)
2. Backup ssh keys, m2 settings, and war or
binary as well (this can be managed by
puppet or chef as well)
5/8/2014 Jenkins - A complete solution 5
Master Server best practices
(cont)
6. Alternatively you can Manage/Backup via
Puppet or Chef
• Configure Jenkins master and plugins
• Configure build tools and sdk’s
• Install logging/monitoring agents
5/8/2014 Jenkins - A complete solution 6
Master Server best practices
(cont)
7. • Slaves should be considered quick to setup
and thrown away
• You can go with dedicated systems or quickly
spun up VM’s depending on traffic
• Plan for the high IO on the slaves
• Monitor CPU and Disk Space
• Consider segregating heavier jobs
5/8/2014 Jenkins - A complete solution 7
Slave Server best practices
8. • To many steps
• Overuse of shell steps
• Build logic when not needed
• Not under SCM
• Managing Branches via UI can result in
duplication.
5/8/2014 Jenkins - A complete solution 8
Frequent issues with Jobs
9. • Use plugins to lower amount of steps
• Don’t add to much extra logic
• Make sure jobs are under SCM
• If running CI practives use jenkins to help
manage branches
5/8/2014 Jenkins - A complete solution 9
Jobs best practices
10. a
• Consider moving slaves to a Virtual or cloud
setup
• Keep a minimal pool of slaves and spin up new
ones as needed and then remove them an
hour after last build.
Jenkins – Scaling Best Practices 10
Advanced Jobs practices