RUNBOT: ¿Qué es y para qué sirve?
Como consultor funcional y responsable de proyectos en avanzosc, uno de mis caballos de batalla es intentar que la calidad de código y la funcionalidad de nuestros módulos sea comprobada antes de que sean instalados en entornos productivos.
Hasta hace relativamente poco tiempo y en la mayoría de las soluciones de mercado, la única forma de hacer esto, era tener un entorno "pruebas/demo" donde los técnicos instalaban su recientemente creado o modificado módulo y los funcionales intentábamos encontrar los agujeros o fallos de código antes de presentarlo al cliente e instalarlo en su entorno.
Para minimizar el impacto de errores y tener un entorno funcional donde testear el código y todas las mejoras que se van introduciendo, Odoo cuenta con una impresionante herramienta llamada runbot
Como usar GITHUB + RUNBOT desde el punto de vista funcional
Usar en conjunto ambas herramientas te permiten testear rápidamente cualquier modificación o nuevo módulo publicado por Odoo o por la comunidad
A los neófitos en Odoo, es necesario explicar que actualmente la herramienta que se utiliza para publicar código de Odoo es Github. En el enlace podeis ver el listado de módulos que incluye de base el core de Odoo (antes OpenERP) versión 8.0
En la parte derecha se pueden visualizar el botón "PULL REQUEST".
Pull Request --> Enlace github / runbot
Un Pull request es código que se quiere fusionar con la actual versión publicada de la herramienta.
Así por ejemplo, si alguien encuentra un problema o "issue", para el que hay que modificar un módulo, dicha modificación se sube a github mediante un Pull Request o PR.
Cada PR puede corresponder a un módulo nuevo [ADD], corrección [FIX], mejora [IMP]. Estas etiquetas se añaden en el nombre de cada módulo. Además, cada uno de ellos está numerado y este número aparece justo debajo del nombre por ejemplo, #8026
Cada vez que alguien realiza un nuevo PR, sea para lo que sea, es necesario comprobar que no "rompe" nada de lo que está programado en la versión estable. Existe en Odoo la posibilidad de incluir en el módulo casos automáticos de test que pueden realizar esta validación, pero esto sería otro capítulo. Veamos ahora cómo comprobar la validez de un PR en runbot.
Runbot: Las cajas de colores
Cada caja de colores corresponde en runbot a una instancia, un "build" de Odoo, incluyendo parte del código completo.
Por cada versión/PR... etc se mantienen únicamente los 4 últimos "build". Según se van añadiendo o fusionando nuevas cosas, nuevos builds aparecen a la izquierda y los más antiguos desaparecen por la derecha
Si cogemos la fila marcada con una estrella amarilla y la etiqueta 8.0, estamos mirando la versión estable 8.0 de Odoo. Si cogemos la de arriba estaremos mirando la versión anterior 7.0. Si bajamos una línea, vemos "master", sería la versión futura y más abajo aún, cada una de las versiones de SAAS que mantiene Odoo.
Cada fila contiene cajas que están en "verde" (todos los test fueron correctos y está funcionando), "rojo" (algo falló y probablemente no funcione), "azul" (Se está creando un build, o está pendiente)
Cada caja contiene además una puerta azul, que si pulsamos nos lleva directamente a una base de datos en esa versión que podemos testear. Podemos crear cosas, borrar, cambiar, instalar módulos... hacer un poco lo que queramos con ello igual que si hiciésemos una instalación en local. Con la diferencia de que esto es efímero. En cuanto haya otros 4 builds la base de datos en la que hemos estado probando desaparecerá.
Probando un PR
La enorme, increible ventaja de Runbot es que puedes PROBAR código ANTES de que la fusión se realice con el código base.
Si hacemos un poco de scroll hacia abajo, veremos que cada PR es a su vez una fila. Cada número de PR en Github aparece en runbot. Solo tenemos que buscarlo y de nuevo pulsar la puerta azul para ver nuestro nuevo código instalado en esa instancia y podemos probarlo, detectando prosible problemas o mejoras a realizar.
Para completar el ciclo, si se ve que el PR es correcto y se aprueba la fusión con el codigo base, se indica en Github un comentario incluyendo +1. Si no se aprueba o hay algún problema se indica igualmente incluyendo -1.
Esta forma de hacerlo, permite a los técnicos revisar el código antes de la fusión y modificarlo bien actualizando el PR existente, bien creando otro nuevo que a su vez se podrá testear en Runbot.