CONTINUOUS INTEGRATION                              Sam Reghenzi                         http://sammyrulez.com            ...
COSA E’              Un sistema volto a verificare in un determinato istante la                           consistenza di un...
Source code                          Repository                               Check out                         Build serv...
PERCHÈ       Integrare continuamente i cambiamenti al codice eviterà ritardi                       più avanti nel ciclo de...
PRACTICES OF CONTINUOUS           INTEGRATION                         Single Source Repository        Mantenere un singolo...
PRACTICES OF CONTINUOUS           INTEGRATION                           Build automatiche        La build del progetto non...
PRACTICES OF CONTINUOUS           INTEGRATION                         Build che integrino i test e metriche        I test ...
PRACTICES OF CONTINUOUS           INTEGRATION                     Tutti committino almeno una volta al giorno        Senza...
RCOV E METRIC_FUvenerdì 10 giugno 2011
KEEP BUILD FAST!              Il valore del processo di CI è dare feedback rapidamentevenerdì 10 giugno 2011
REPOSITORY PULL    • Fornisce             un feedback più immediato    • Stimola             il commit atomico    • Limita...
EXTREME FEEDBACK                         Funziona meglio dell’email e smorza lo stressvenerdì 10 giugno 2011
CONTINUOUS INTEGRATION      È UNA METODOLOGIA E          NON UN TOOLvenerdì 10 giugno 2011
E INVECE STRUMENTI!    • Nessuno            ( cron + script + rake )    • ContinuousBuilder    • Cerberus    • CruiseContr...
INTEGRITY                          Pros                             Cons        • Leggero                          • In   ...
TRAVIS                         Pros                             Cons        • In      the cloud            • In   fase ini...
JENKINS                         Pros                     Cons        • Provata        stabilità        • Non leggero come ...
SETUP    • Download             & Install    • Aggiungere            i plug-in necessari ( e anche quelli divertenti !)   ...
SOFTWARE FOR REAL!venerdì 10 giugno 2011
CI_REPORTER GEM                         namespace :hudson do                           task :spec => ["hudson:setup:rspec"...
CONTINUOUS DEPLOYMENT                                   Cosa non è                •Deployare in produzione ad ogni commit ...
CONTINUOUS DEPLOYMENT    • Continous                 Integration    • SCM                sano    • Semplice              s...
CONTINUOUS DEPLOYMENT                         Rollback systemvenerdì 10 giugno 2011
CONTINUOUS DEPLOYMENT                         Root cause analysis & 5 whysvenerdì 10 giugno 2011
GRAZIE A TUTTI                                  Riferimenti    •5 steps http://radar.oreilly.com/2009/03/continuous-deploy...
Upcoming SlideShare
Loading in …5
×

continuous integration rubyday Italy 2011

1,179 views

Published on

La mia presentazione su continuous integration per progetti ruby fatta al rubyday 2011

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,179
On SlideShare
0
From Embeds
0
Number of Embeds
35
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

continuous integration rubyday Italy 2011

  1. 1. CONTINUOUS INTEGRATION Sam Reghenzi http://sammyrulez.com @sammyrulezvenerdì 10 giugno 2011
  2. 2. COSA E’ Un sistema volto a verificare in un determinato istante la consistenza di una code base.venerdì 10 giugno 2011
  3. 3. Source code Repository Check out Build server Make Tests Metriche FLUSSO FONDAMENTALEvenerdì 10 giugno 2011
  4. 4. PERCHÈ Integrare continuamente i cambiamenti al codice eviterà ritardi più avanti nel ciclo del progettovenerdì 10 giugno 2011
  5. 5. PRACTICES OF CONTINUOUS INTEGRATION Single Source Repository Mantenere un singolo repository per il codice di un artefatto. Se lo stesso artefatto è presente su repository differenti dovrebbe essere oggetto di diversi processi di integrazionevenerdì 10 giugno 2011
  6. 6. PRACTICES OF CONTINUOUS INTEGRATION Build automatiche La build del progetto non deve essere condizionata da conoscenze specifiche , individuali o infrastrutturali Bundler Migrations Seed Gems Fixturevenerdì 10 giugno 2011
  7. 7. PRACTICES OF CONTINUOUS INTEGRATION Build che integrino i test e metriche I test garantiscono a vari livelli la stabilità dinamica e la correttezza del software oggetto della build. Le metriche innalzano il livello di qualità intrinseca e di standardizzazione del codice.venerdì 10 giugno 2011
  8. 8. PRACTICES OF CONTINUOUS INTEGRATION Tutti committino almeno una volta al giorno Senza una code base aggiornata il processo di integrazione è inutile. Tempi lunghi di produzione di codice stabile possono essere indicatori di un problema di processo.venerdì 10 giugno 2011
  9. 9. RCOV E METRIC_FUvenerdì 10 giugno 2011
  10. 10. KEEP BUILD FAST! Il valore del processo di CI è dare feedback rapidamentevenerdì 10 giugno 2011
  11. 11. REPOSITORY PULL • Fornisce un feedback più immediato • Stimola il commit atomico • Limita il desiderio di utilizzare l’SCM come area scambio filevenerdì 10 giugno 2011
  12. 12. EXTREME FEEDBACK Funziona meglio dell’email e smorza lo stressvenerdì 10 giugno 2011
  13. 13. CONTINUOUS INTEGRATION È UNA METODOLOGIA E NON UN TOOLvenerdì 10 giugno 2011
  14. 14. E INVECE STRUMENTI! • Nessuno ( cron + script + rake ) • ContinuousBuilder • Cerberus • CruiseControl • CruiseControl.rbvenerdì 10 giugno 2011
  15. 15. INTEGRITY Pros Cons • Leggero • In fase transitoria di sviluppo • Facile • Supporta solo git da configurare • Supporto • Pochi punti di estensione per gitvenerdì 10 giugno 2011
  16. 16. TRAVIS Pros Cons • In the cloud • In fase iniziale di sviluppo • Specfico per ruby • Supporta solo git • Supporto per git • Pochi punti di estensionevenerdì 10 giugno 2011
  17. 17. JENKINS Pros Cons • Provata stabilità • Non leggero come i • Estensibile precedenti • Supporta qualunque tecnologiavenerdì 10 giugno 2011
  18. 18. SETUP • Download & Install • Aggiungere i plug-in necessari ( e anche quelli divertenti !) • Creare un JOB • Post commit hooks ( opzionale ) • Aggiungere i rake task per le metrichevenerdì 10 giugno 2011
  19. 19. SOFTWARE FOR REAL!venerdì 10 giugno 2011
  20. 20. CI_REPORTER GEM namespace :hudson do task :spec => ["hudson:setup:rspec", db:migrate, rake:spec] namespace :setup do task :pre_ci do ENV["CI_REPORTS"] = hudson/reports/spec/ gem ci_reporter require ci/reporter/rake/rspec end task :rspec => [:pre_ci, "ci:setup:rspec"] end endvenerdì 10 giugno 2011
  21. 21. CONTINUOUS DEPLOYMENT Cosa non è •Deployare in produzione ad ogni commit •Usare la produzione invece dell’ambiente di test Cosa è •Avere un ambiente allineato con le build •Deployare in produzione automaticamente alcune buildvenerdì 10 giugno 2011
  22. 22. CONTINUOUS DEPLOYMENT • Continous Integration • SCM sano • Semplice sistema di deploy • Ambiente replica della produzione per test funzionali • Monitoring (!!!)venerdì 10 giugno 2011
  23. 23. CONTINUOUS DEPLOYMENT Rollback systemvenerdì 10 giugno 2011
  24. 24. CONTINUOUS DEPLOYMENT Root cause analysis & 5 whysvenerdì 10 giugno 2011
  25. 25. GRAZIE A TUTTI Riferimenti •5 steps http://radar.oreilly.com/2009/03/continuous-deployment-5-eas.html • Martin Fowler http://martinfowler.com/articles/continuousIntegration.html •Rails & Jenkins http://reprocessed.org/blog/easy_rails_ci_with_hudsonvenerdì 10 giugno 2011

×