Professional Documents
Culture Documents
Docker and CI
Docker and CI
An experience building
complex CI environments
Patxi Gortázar
francisco.gortazar@urjc.es
@fgortazar
Bio
Devops @ Kurento
@fgortazar
https://es.linkedin.com/in/franciscogortazar
Consultancy / Training
Cloud Computing Open source elastic platform
Distributed Systems for end to end testing
Web Technologies
Advanced log management
Extreme Programming
Test orchestration
Testing / Git / Jenkins
Test execution comparison
Software Architectures
Web and Mobile testing
Concurrent Programming
Security testing
IoT testing
Performance testing
http://codeurjc.es http://elastest.io
Why
Building clients
Building Debian packages
• 1 node mvn & jdk 7 &
• 2 Ubuntu Trusty VMs node 4
• 4 Ubuntu Xenial VMs • 1 node mvn & jdk 7 &
• 2 Ubuntu latest VMs node 6
• 1 node mvn & jdk 8 &
node 4
• 1 node mvn & jdk 8 &
node 6
Further problems
• Developers are pushing hard towards ops/devops
to include changes in infrastructure
• Changes can hardly be reverted (possible, but…)
• Hard to test locally
– Works in my machine effect
• Wasted resources
• And at the same time, insufficient resources
Can we do better?
Simplifying CI with Docker
How
• Leverage Jenkins Pipeline
– CI configuration hosted within code repositories
– Docker support out-of-the-box
– Jenkins jobs launch containers on top of VMs
– VMs have all the same minimum configuration:
Docker
Current Infrastructure
1 VM Jenkins Master
N VMs Jenkins Workers (running Docker)
2 VM configurations
Where are my environments?
Coordinator http://elastest.io/
Devops @ Kurento
@fgortazar
https://es.linkedin.com/in/franciscogortazar