1. Jenkins User Meetup
May 27th, 2011 @ Paris
Jenkins at eXo
From development to Quality Insurance
2. Arnaud Héritier
• Jenkins • eXo - Software Factory
» Used in various contexts for many Manager
years » In charge of tools and methods
» Helped a little bit @olamy on the • Apache Maven :
Maven 3 integration
» Committer since 2004 and member
» Few patches of the Project Management
Committee
• Coauthor of « Apache Maven »
» published by Pearson (in
French)
• Contact me :
» http://aheritier.net
» Twitter : @aheritier
» Skype : aheritier
2
5. eXo
France: (~20)
Ukraine: (~30)
Tunisia: (~30)
USA: (~10)
Vietnam: (~70)
• Independent Software Vendor
• ~160 employees worldwide
• A large proportion of developments are OSS
• Historically JEE/Portal provider now merged
with JBoss GateIn
5
6. eXo platform product
• Build on the top of several
opensource projects
» Collaboration
» Knowledge
» Social
» GateIn
» JCR
» …
• A lot of integration tasks
6
8. Infrastructure
• One main server » Processor Intel Xeon i7
W3520 4x 2x 2.66+ GHz
hosting Jenkins and (with hyper-threading) 8
Nexus ( ) Mo L2 - QPI 4.8 GT/sec –
Virtualization: Instructions
» Continuous VT - Turbo Boost
integration and Technology @ 2.93GHz
packaging » Architecture 64 bits
» Memory 12 Go DDR3
• 8 dedicated servers » Storage 2x 1500 Go -
for performances and SATA2
various QA tests » RAID 0/1
» NIC GigaEthernet / 1 Gbps
8
9. Integration
• Build, Test and
Deploy ASAP
» Using Maven 2/3
» From sources in SVN
or GIT
• googlecode, jboss, exo,
github repos
» To Maven repositories
• ~100 jobs
9
10. Packaging
• Generate the full
packaging of our
products
» Ready for demo or tests
• Use upstream
constraints and a large
quiet period to not
launch them to often
• Use priority sorter
plugin with a reduced
priority
• ~20 jobs
10
11. Quality management
• Sonar reports everyday if the code had
changed (polling)
» ~90 jobs
• Continuous deployment and integration or
performances tests
» Jmeter
» Selenium
» JMXTrans / Graphite / OpenNMS for monitoring
11
23. From our experience
• Try to keep up-to-date your server and its
plugins
» Cost of automation to update is low
• swfjenkins-install-tomcat VERSION
• swfjenkins-install-jenkins VERSION
» Reduced cost if regular (every X weeks)
» Setup a validation environment to test the
upgrade
• Invest a little bit to have a configurable build to manage
various env (don’t deploy in prod or send mails when you are
testing a new version J )
23
24. From our experience
• Forge architecture tuning
» Try to have powerful servers
» Take care of IOs
» Scaling with Multi-CPU only if you build in // and you
enough have memory (and you don’t overload IOs)
» Try to reduce network Ops
• Jenkins and Nexus are on the same server (not a perfect solution
but it helps)
• Local SVN rsynced from our master.
• Take care of your repo manager :
» bottleneck
24
25. From our experience
• Jobs tuning
» When to launch them
• Not to often to not overload the server
• Enough often to validate integrations
• Take care of triggers, especially using SNAPSHOTs
• Use build constraints (upstream/downstream)
» The history to keep
• Do you need so much history ?
• Do you need to archive binaries ?
• It greatly increases the startup time
25
26. From our experience
• Jobs tuning
» WIP : Split jobs and create a chain with various
steps :
• Build + unit tests (keep it quick)
• Integration tests
• Continuous/Regular deployment on an acceptance
environment
• Quality reports (Sonar or similar …)
26
27. From our experience
• Do not deploy it on the cloud if you don’t have
a real distributed architecture
» Cloud (AWS) servers aren’t enough powerful to
host a big server.
» If you want to deploy it on the cloud use agents
deployed on a set of nodes … or use CloudBees
27
28. Our expectations for the future
• Reduce the start-up time
» Implement a lazy-loading of builds history ?
• A better groovy console
» Syntax coloration
» Code validation
» Auto-completion (we can dream )
» Live console output
» Simplify jobs edition APIs (add setters …)
28
29. Our expectations for the future
• More batch edition capabilities
» A la “slicing configuration” to avoid the usage of
the groovy console
• More features to export/import backup/restore
jobs
• And I’ll be happy to contribute
» See you tomorrow !!
29
31. Licence et copyrights
• Photos and logos belong to their respective
authors/owners
• Content under Creative Commons 3.0
» Attribution — You must attribute the work in the manner
specified by the author or licensor (but not in any way that suggests
that they endorse you or your use of the work).
» Noncommercial — You may not use this work for commercial
purposes.
» Share Alike — If you alter, transform, or build upon this work,
you may distribute the resulting work only under the same or similar
license to this one.
• http://creativecommons.org/licenses/by-nc-sa/3.0/us/
31