SlideShare a Scribd company logo
Ruby CI with Jenkins


                    • cowboyd@github
                    • cowboyd@twitter


Monday, March 5, 2012                          1
Your Development
                        Process Needs CI


Monday, March 5, 2012                      2
Not for code quality*


                           * this is still very important
Monday, March 5, 2012                                       3
For deployment



Monday, March 5, 2012                    4
You Need CI.
                       CI is crucial to
                   application distribution


Monday, March 5, 2012                         5
Ruby deploys suck



Monday, March 5, 2012                       6
Typical Deploy

                    • check out from source control
                    • bundle gems
                    • generate assets (rails/sprockets)
                    • and then more stuff...

Monday, March 5, 2012                                     7
Deploying from SCM
                              sucks


Monday, March 5, 2012                        8
Deploying from SCM
                              sucks

                    • If Github is getting DDOS’d should that
                        mean you can’t deploy?
                    • Branches and tags can be moving targets
                    • server affinity for a particular branch


Monday, March 5, 2012                                           9
Bundling gems at
                        deploy-time sucks


Monday, March 5, 2012                       10
Bundling gems at
                        deploy-time sucks

                    • Why should my deploy depend on
                        rubygems.org?
                    • My app is about to go live. Is now really the
                        best time to be compiling C extensions?




Monday, March 5, 2012                                                 11
Asset generation on
                          deploy sucks


Monday, March 5, 2012                         12
Asset generation on
                          deploy sucks

                    • time consuming
                    • not tested anywhere else until go-time


Monday, March 5, 2012                                          13
If you’re going to
                        deploy, then deploy.


Monday, March 5, 2012                          14
This is what we do


                    1. unpack application archive
                    2. restart server processes




Monday, March 5, 2012                               15
This is how we do it




Monday, March 5, 2012                          16
CI should verify a fully
                 assembled application,
                not just its source code


Monday, March 5, 2012                       17
Deploy a verified, fully
                        assembled application.


Monday, March 5, 2012                             18
Deploy the output of
                              your CI


Monday, March 5, 2012                          19
What we assemble

                    • Source Code
                    • Gem Bundle
                    • Static Assets (rails 3.1/Sprockets)
                    • Passenger
                    • Ruby

Monday, March 5, 2012                                       20
Pass


                                            Deployable
                        Fail




                           Discard
Monday, March 5, 2012                                    21
Winning

                    • No (or very few) network dependencies
                    • No (or very few) host dependencies
                    • Fast!
                    • Idempotent deploys

Monday, March 5, 2012                                         22
Ruby deploys suck
                        because they grew up
                            with out CI


Monday, March 5, 2012                          23
Why Jenkins?



Monday, March 5, 2012                  24
Zero-Config Install
                            apt-get install jenkins
                            yum install jenkins
                            chef, puppet and
                            friends




Monday, March 5, 2012                                 25
Open Source



Monday, March 5, 2012                 26
Extensible
                        400+ plugins to date




Monday, March 5, 2012                          27
Ruby Tools!
                          Command Line
                           Plugin SDK




Monday, March 5, 2012                    28
Ruby CLI




Monday, March 5, 2012              29
Ruby Plugins
                           Live Coding!!!




Monday, March 5, 2012                       30
Ruby CI with Jenkins


                    • cowboyd@github
                    • cowboyd@twitter


Monday, March 5, 2012                          31

More Related Content

PDF
Aula de Sistemas Distribuídos - Invocação Remota
PDF
Timeseries - data visualization in Grafana
PDF
Edgar Rodrigues - História do movimento anarquista em Portugal
PDF
Kamailio :: A Quick Introduction
PPTX
Java concurrency - Thread pools
PPTX
Cronjob
PDF
Write your own telegraf plugin
PPT
Aula de Sistemas Distribuídos - Invocação Remota
Timeseries - data visualization in Grafana
Edgar Rodrigues - História do movimento anarquista em Portugal
Kamailio :: A Quick Introduction
Java concurrency - Thread pools
Cronjob
Write your own telegraf plugin

Similar to Ruby CI with Jenkins (20)

PDF
Introducing Immutant
PDF
Michael mahlberg exploratory-testing-the_missing_half_of_bdd
PDF
Dan node meetup_socket_talk
PDF
PFCongres 2012 - Rock Solid Deployment of PHP Apps
PDF
Waza keynote: Idea to Delivery
PDF
Map Reduce v2 and YARN - CHUG - 20120604
PDF
Análisis de ataques APT
PDF
The Future of Apache CloudStack (Not So Cloudy) (Collab 2012)
PDF
Jvm-bdd-quality-driven
PDF
CodeCamp Iasi 10 march 2012 - Infrastructure as code
PDF
Solit 2013, Behaviour Driven Development, Ихелис Александр
PDF
Games for the Masses (QCon London 2012)
PDF
Ironfan: Build a Hadoop Cluster in 20 minutes
PDF
QCON SP 2012
PDF
Engines Lightning Talk
PDF
Architecting for failure
PDF
oEmbed in Drupal
PDF
GitHub Notable OSS Project
PDF
Games for the Masses - Wie DevOps die Entwicklung von Architektur verändert (...
PPTX
Who’s using my apps
Introducing Immutant
Michael mahlberg exploratory-testing-the_missing_half_of_bdd
Dan node meetup_socket_talk
PFCongres 2012 - Rock Solid Deployment of PHP Apps
Waza keynote: Idea to Delivery
Map Reduce v2 and YARN - CHUG - 20120604
Análisis de ataques APT
The Future of Apache CloudStack (Not So Cloudy) (Collab 2012)
Jvm-bdd-quality-driven
CodeCamp Iasi 10 march 2012 - Infrastructure as code
Solit 2013, Behaviour Driven Development, Ихелис Александр
Games for the Masses (QCon London 2012)
Ironfan: Build a Hadoop Cluster in 20 minutes
QCON SP 2012
Engines Lightning Talk
Architecting for failure
oEmbed in Drupal
GitHub Notable OSS Project
Games for the Masses - Wie DevOps die Entwicklung von Architektur verändert (...
Who’s using my apps
Ad

Recently uploaded (20)

PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Machine learning based COVID-19 study performance prediction
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Approach and Philosophy of On baking technology
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Electronic commerce courselecture one. Pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Spectral efficient network and resource selection model in 5G networks
Chapter 3 Spatial Domain Image Processing.pdf
Review of recent advances in non-invasive hemoglobin estimation
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Network Security Unit 5.pdf for BCA BBA.
Machine learning based COVID-19 study performance prediction
Advanced methodologies resolving dimensionality complications for autism neur...
Approach and Philosophy of On baking technology
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Mobile App Security Testing_ A Comprehensive Guide.pdf
Electronic commerce courselecture one. Pdf
Ad

Ruby CI with Jenkins

  • 1. Ruby CI with Jenkins • cowboyd@github • cowboyd@twitter Monday, March 5, 2012 1
  • 2. Your Development Process Needs CI Monday, March 5, 2012 2
  • 3. Not for code quality* * this is still very important Monday, March 5, 2012 3
  • 5. You Need CI. CI is crucial to application distribution Monday, March 5, 2012 5
  • 6. Ruby deploys suck Monday, March 5, 2012 6
  • 7. Typical Deploy • check out from source control • bundle gems • generate assets (rails/sprockets) • and then more stuff... Monday, March 5, 2012 7
  • 8. Deploying from SCM sucks Monday, March 5, 2012 8
  • 9. Deploying from SCM sucks • If Github is getting DDOS’d should that mean you can’t deploy? • Branches and tags can be moving targets • server affinity for a particular branch Monday, March 5, 2012 9
  • 10. Bundling gems at deploy-time sucks Monday, March 5, 2012 10
  • 11. Bundling gems at deploy-time sucks • Why should my deploy depend on rubygems.org? • My app is about to go live. Is now really the best time to be compiling C extensions? Monday, March 5, 2012 11
  • 12. Asset generation on deploy sucks Monday, March 5, 2012 12
  • 13. Asset generation on deploy sucks • time consuming • not tested anywhere else until go-time Monday, March 5, 2012 13
  • 14. If you’re going to deploy, then deploy. Monday, March 5, 2012 14
  • 15. This is what we do 1. unpack application archive 2. restart server processes Monday, March 5, 2012 15
  • 16. This is how we do it Monday, March 5, 2012 16
  • 17. CI should verify a fully assembled application, not just its source code Monday, March 5, 2012 17
  • 18. Deploy a verified, fully assembled application. Monday, March 5, 2012 18
  • 19. Deploy the output of your CI Monday, March 5, 2012 19
  • 20. What we assemble • Source Code • Gem Bundle • Static Assets (rails 3.1/Sprockets) • Passenger • Ruby Monday, March 5, 2012 20
  • 21. Pass Deployable Fail Discard Monday, March 5, 2012 21
  • 22. Winning • No (or very few) network dependencies • No (or very few) host dependencies • Fast! • Idempotent deploys Monday, March 5, 2012 22
  • 23. Ruby deploys suck because they grew up with out CI Monday, March 5, 2012 23
  • 25. Zero-Config Install apt-get install jenkins yum install jenkins chef, puppet and friends Monday, March 5, 2012 25
  • 27. Extensible 400+ plugins to date Monday, March 5, 2012 27
  • 28. Ruby Tools! Command Line Plugin SDK Monday, March 5, 2012 28
  • 30. Ruby Plugins Live Coding!!! Monday, March 5, 2012 30
  • 31. Ruby CI with Jenkins • cowboyd@github • cowboyd@twitter Monday, March 5, 2012 31