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.
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. “…una user story non è completa finché
non è nelle mani di chi la deve usare…”
3
9. Automatizziamo!
@morafabio
9
one-click
auto auto auto
auto
develop integrate build QA deploy
Continuos Integration
Continuos Delivery
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
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. Testing end to end in buildhost
@morafabio
24
facebook/php-webdriver
Selenium Xfvb Jenkins
https://github.com/morafabio/headless-selenium