Jenkins, no me rompas los builds!

  • Published on
    25-May-2015

  • View
    394

  • Download
    0

Embed Size (px)

DESCRIPTION

Jenkins - don't break my builds! is an introductory talk in spanish I gave at the PHP Conference 2013 in Argentina. I spoke about how I met Contintinuous Integration at Google in 2005, and how my experience has been since. I also gave tips on how to start using it in projects that have no "integration" to speak of (such as most PHP projects).

Transcript

<ul><li> 1. Jenkins No me rompas los builds! Gonzalo Sainz-Trpaga 4 de octubre de 2013 PHP Conference Argentina </li></ul> <p> 2. Gonzalo Sainz-Trpaga aka GomoX @gomox_ar me madrugaron 3. @InvGate 4. Agenda 1. Qu 2. Por qu 3. Cmo se hace 4. Cmo lo usamos 5. 2005 6. Leo 7. Leo 8. Leo 9. Integracin Continua ("CI" para los amigos) 10. Desarrollador Repositorio JenkinsLeo 11. ? 12. Build, test &amp; release 13. Construir EntregarAprender 14. Integracin Continua ("CI", Continuous Integration) Entrega Continua ("CD", Continuous Delivery) + 15. Por ejemplo Saquemos una nueva versin de mi site 16. A mano: 1. Verificar que no es viernes a la tarde 2. Instalo el cdigo en una instancia de prueba o staging 3. Ejecuto tests automticos y manuales 4. Si algo sali mal, averigu quin lo rompi o lo intento arreglar 5. Instalo de nuevo el cdigo en prueba o staging 6. Entro al servidor de produccin 7. Bajo el servicio del app server 8. Copio el cdigo nuevo 9. Verifico que todos los datos que estaban almacenados en el disco del server se hayan copiado bien 10. Me conecto a la base de datos 11. Aplico los cambios en la base de datos 12. Reinicio el servicio del app server 13. Verifico mnimamente que siga andando todo 14. Avisar que hay una nueva versin en produccin por las dudas de que se haya roto algo 17. Con CI + CD: 1. Apretar "deploy" 18. 90's Extreme Programming 19. Build Commit 20. Build? 21. Build Commit Deploy Test (ms) Test 22. Build Commit Deploy Test (ms) Test 23. Y muchas otras cosas! Chequeos de sintaxis Anlisis esttico phpmd phpcs Pseudo-builds Ofuscar / encriptar Minificar JS Optimizar imgenes o CSS etc 24. (ex Hudson) Jenkins 25. Instalacin Bajar un paquete para tu entorno Instalador para Windows Instalador para Mac Repositorios de Debian o RPM o usar CloudBees (JaaS) 300 build minutes por mes gratis 26. A ver... 27. Conceptos Job Executor Build Artifact 28. Est bueno para integracin continua, pero sirve para cualquier cosa. Es un gestor de tareas. 29. 800+ Plugins 30. Algunos ms serios que otros... 31. Nuestra experiencia Cmo lo usamos, y cmo nos va. 32. Nuestro entorno (!) 33. Syntax check Test sanidad Encriptacin Anlisis Esttico Documentacin (DocBook PDF) Staging Cloud Generacin de paquetes (4) Nuevo cdigo Push a repositorios Aprobacin QA Notificaciones 34. Y unas cuantas ms! Una vez que est implementado, es cmodo como lugar para volcar cualquier proceso manual o automtico. 35. TTP "time to production" TTR "time to release" 36. 5 min Tiempo de release 2 das 37. Pasos necesarios 2: tag, botn. 17 38. No ms: Olvidos en paquetes o deployments Hotfixes en produccin (release, upgrade) Me da error de sintaxis Quin hizo este release? No se puede hacer porque no est X Cmo se haca el paquete X? No tengo el entorno X que hace falta No saba que haca falta el entorno X No est el paquete para X 39. Y sobre todo, no ms sorpresas. 40. Y por fin lo entend a Leo! 41. En conclusin Ms tiempo desarrollando Menos tiempo debugeando Es fcil Es gratis No teman! 42. SCM Bugs CI 43. Gracias! :) 44. ? 45. Para arrancar: Instalarlo lleva 5 minutos Empezar de a poco PHPUnit o cualquier test automtico son candidatos cantados a un primer build. Builds de juguete (PHPCS, PHPMD) En aplicaciones SaaS, automatizar la generacin y/o actualizacin de entornos de testing y/o staging. </p>