SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
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

Mais conteúdo relacionado

Semelhante a Ruby CI with Jenkins

Análisis de ataques APT
Análisis de ataques APT Análisis de ataques APT
Análisis de ataques APT
linenoise
 
The Future of Apache CloudStack (Not So Cloudy) (Collab 2012)
The Future of Apache CloudStack (Not So Cloudy) (Collab 2012)The Future of Apache CloudStack (Not So Cloudy) (Collab 2012)
The Future of Apache CloudStack (Not So Cloudy) (Collab 2012)
Chiradeep Vittal
 
Jvm-bdd-quality-driven
Jvm-bdd-quality-drivenJvm-bdd-quality-driven
Jvm-bdd-quality-driven
Amir Barylko
 
CodeCamp Iasi 10 march 2012 - Infrastructure as code
CodeCamp Iasi 10 march 2012 - Infrastructure as codeCodeCamp Iasi 10 march 2012 - Infrastructure as code
CodeCamp Iasi 10 march 2012 - Infrastructure as code
Codecamp Romania
 
GitHub Notable OSS Project
GitHub  Notable OSS ProjectGitHub  Notable OSS Project
GitHub Notable OSS Project
roumia
 

Semelhante a Ruby CI with Jenkins (20)

Análisis de ataques APT
Análisis de ataques APT Análisis de ataques APT
Análisis de ataques APT
 
The Future of Apache CloudStack (Not So Cloudy) (Collab 2012)
The Future of Apache CloudStack (Not So Cloudy) (Collab 2012)The Future of Apache CloudStack (Not So Cloudy) (Collab 2012)
The Future of Apache CloudStack (Not So Cloudy) (Collab 2012)
 
Jvm-bdd-quality-driven
Jvm-bdd-quality-drivenJvm-bdd-quality-driven
Jvm-bdd-quality-driven
 
CodeCamp Iasi 10 march 2012 - Infrastructure as code
CodeCamp Iasi 10 march 2012 - Infrastructure as codeCodeCamp Iasi 10 march 2012 - Infrastructure as code
CodeCamp Iasi 10 march 2012 - Infrastructure as code
 
Solit 2013, Behaviour Driven Development, Ихелис Александр
Solit 2013, Behaviour Driven Development, Ихелис АлександрSolit 2013, Behaviour Driven Development, Ихелис Александр
Solit 2013, Behaviour Driven Development, Ихелис Александр
 
Games for the Masses (QCon London 2012)
Games for the Masses (QCon London 2012)Games for the Masses (QCon London 2012)
Games for the Masses (QCon London 2012)
 
Ironfan: Build a Hadoop Cluster in 20 minutes
Ironfan: Build a Hadoop Cluster in 20 minutesIronfan: Build a Hadoop Cluster in 20 minutes
Ironfan: Build a Hadoop Cluster in 20 minutes
 
QCON SP 2012
QCON SP 2012QCON SP 2012
QCON SP 2012
 
Engines Lightning Talk
Engines Lightning TalkEngines Lightning Talk
Engines Lightning Talk
 
Architecting for failure
Architecting for failureArchitecting for failure
Architecting for failure
 
oEmbed in Drupal
oEmbed in DrupaloEmbed in Drupal
oEmbed in Drupal
 
GitHub Notable OSS Project
GitHub  Notable OSS ProjectGitHub  Notable OSS Project
GitHub Notable OSS Project
 
Games for the Masses - Wie DevOps die Entwicklung von Architektur verändert (...
Games for the Masses - Wie DevOps die Entwicklung von Architektur verändert (...Games for the Masses - Wie DevOps die Entwicklung von Architektur verändert (...
Games for the Masses - Wie DevOps die Entwicklung von Architektur verändert (...
 
Who’s using my apps
Who’s using my appsWho’s using my apps
Who’s using my apps
 
Best Practices for (Enterprise) OSGi applications - Tim Ward
Best Practices for (Enterprise) OSGi applications - Tim WardBest Practices for (Enterprise) OSGi applications - Tim Ward
Best Practices for (Enterprise) OSGi applications - Tim Ward
 
RubyMotion Inspect Conference - 2013. (Without speaker notes.)
RubyMotion Inspect Conference - 2013. (Without speaker notes.)RubyMotion Inspect Conference - 2013. (Without speaker notes.)
RubyMotion Inspect Conference - 2013. (Without speaker notes.)
 
THE STATE OF GLOBAL INFRASTRUCTURE PERFORMANCE from Structure 2012
THE STATE OF GLOBAL INFRASTRUCTURE PERFORMANCE from Structure 2012THE STATE OF GLOBAL INFRASTRUCTURE PERFORMANCE from Structure 2012
THE STATE OF GLOBAL INFRASTRUCTURE PERFORMANCE from Structure 2012
 
The Basics of Multisiting
The Basics of MultisitingThe Basics of Multisiting
The Basics of Multisiting
 
Lifecycle of a Drupal Project
Lifecycle of a Drupal ProjectLifecycle of a Drupal Project
Lifecycle of a Drupal Project
 
Who Pulls the Strings?
Who Pulls the Strings?Who Pulls the Strings?
Who Pulls the Strings?
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

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