Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tanti "piccoli rilasci" con Symfony2

985 views

Published on

Una user story non è completa finché non è nelle mani di chi la deve usare. Solo da lì inizia a produrre valore, sia esso economico o sia feedback. Che si tratti di master, preview o production, con l’automazione delle build si possono evitare operazioni ripetitive, complesse, risparmiare tempo, ottenere interessanti metriche sul codice, tutto al fine di arrivare a poter rilasciare ogni poche ore (o, se volete, ogni volta che la build è verde!). Farlo in modo frequente è possibile anche con Symfony2. Mettiamo in pratica con un esempio una delle 12 pratiche di Extreme Programming: continuous delivery e integration tra git, bash, Jenkins e strumenti deploy.

Published in: Engineering
  • Be the first to comment

Tanti "piccoli rilasci" con Symfony2

  1. 1. Tanti “Piccoli Rilasci” con Symfony2 ! 10 ottobre 2014 - SymfonyDay, Milano @morafabio
  2. 2. Chi sono @morafabio 2 1990 Fabio Mora 2001 Linux User Group gallug.it 2008 Software Engineer freelance 2010 Prima SRL 2011 GrUSP, IAD 2013 Studente di Economia 2014 eBay
  3. 3. “…una user story non è completa finché non è nelle mani di chi la deve usare…” 3
  4. 4. http://symfony.com/it/doc/current/cookbook/deployment/tools.html 4
  5. 5. Quanto costa cambiare una singola riga di codice in produzione? 5
  6. 6. Processi… complessi? manual manual manual manual @morafabio 6 develop integrate build QA deploy smoke check merge regression PR test metrics docs changelog package notify go live! KPI stories code test build git push focus n * dev * n * progetti = !!!
  7. 7. “A lazy programmer is a good programmer” 7 Larry Wall
  8. 8. 8
  9. 9. Automatizziamo! @morafabio 9 one-click auto auto auto auto develop integrate build QA deploy Continuos Integration Continuos Delivery
  10. 10. Premesse @morafabio 10 • Version Control System (git) • Test coverage (unit, integration, functional, e2e…) • Avere un host da dedicare a C.I. • Integrare almeno una volta al giorno • Prima di integrare, eseguire una build locale
  11. 11. 1. Una build di Symfony2 @morafabio 11 • Cleanup • Composer • Lint check • parameters.yml • Bower, grunt, sprites… • Security check • Doctrine Migrations • Fixture • Assetic • phpunit -c app/ • … build.xml targets ant build
  12. 12. ant composer ant test 12
  13. 13. ant doctrine-setup 13
  14. 14. 2. Jenkins C.I. • Check safety delle pull-request • Build (parametrizzate) • Testing, smoke, regression • Metriche, docs, changelog • Trigger post build (es. deploy) • Notifiche (mail, push…) • …tons of plugins! apt-get install jenkins wget http://localhost:8080/jnlpJars/jenkins-cli.jar java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin [plugins] @morafabio 14 web interface
  15. 15. 15
  16. 16. 2 @morafabio 16 Setup di un task
  17. 17. Possibile scenario Symfony2 su Jenkins Test xUnit, Clover PHP Metrics http://jenkins-php.org/ 17 SCM Git, GitHub Utility GreenBalls, Workspace Cleanup, HTMLPublisher CheckStyle, DRY, PMD, Violations
  18. 18. 3. Deploy swiss-knife @morafabio • Usa capistrano (rails) • Collezione di recipes • Operazioni su cluster • Multistage extension 18 app/config/deploy.rb gem install capifony capifony .
  19. 19. app/config/deploy.rb 19
  20. 20. cap deploy:setup cap deploy cap deploy:rollback 20
  21. 21. MOAR MOAR!… cap -vT 21 cap -vT | wc -l 83
  22. 22. Lezione imparata! Le cose che avrei voluto sapere prima 22
  23. 23. Tips & Tricks @morafabio 23 • PHPUnit @group No-CI e CI • Cancellare il workspace all’inizio, non alla fine • Usare Satis (ed altri repo locali) • Usare DNS locali • Jenkins sandbox: attenzione ai processi esterni • Git tag ad ogni deploy • Cancellare la cache di APC dopo il deploy • “Green Balls” plugin per Jenkins • bash = triforce!
  24. 24. Testing end to end in buildhost @morafabio 24 facebook/php-webdriver Selenium Xfvb Jenkins https://github.com/morafabio/headless-selenium
  25. 25. Visual Feedback @morafabio 25 + http://jenkins.ci/api/json
  26. 26. Visual Feedback @morafabio 26 + http://jenkins.ci/api/json
  27. 27. 27 “Extreme Programming Explained / 2nd Ed.” Beck, Andres - Addison Wesley Bohem, Beck
  28. 28. planning game, small releases, metaphor, simple design, testing, refactoring, pair programming, collecting ownership, continuos integration, 40 hours/week, customer on site, coding standards, whole team 28
  29. 29. • Travis CI, wercker, Circle CI • Go, Cruise Control, Idephix • Maven, Phing, capistrano, grunt 29 MOAR tools! MOAR books!
  30. 30. Grazie! mail@fabiomora.com facebook.com/fabio.mm @morafabio 30
  31. 31. Domande? Feedback https://joind.in/event/sfdayit-14 Codice https://github.com/morafabio/symfony-ci mail@fabiomora.com facebook.com/fabio.mm @morafabio 31

×