Plastic SCM Mergebot: automatizando tu pipeline de desarrollo

Tradicionalmente muchos equipos de desarrollo cuentan con la figura del integrador o build master encargado de realizar las integraciones de código (merges) de cada una de los feature branch que pueda tener el proyecto que se esté implementando. En otros casos, es directamente cada desarrollador quien se ocupa de realizar sus propios merges de las ramas ya revisadas. En ambos casos la necesidad de la intervención manual representa un freno para la escalabilidad del equipo y su velocidad.

Por ello, la tendencia en el desarrollo de soluciones devops va encaminada hacia automatización de ese proceso. Es decir, un miembro virtual del equipo que juega ese papel de integrador de código. Con ellos podemos automatizar el trabajo manual siguiendo una serie de pasos, lanzar tests y generar los correspondientes checks de forma automática conectándolo a cada uno de los sistemas con los que contemos como repositorios de código, gestores de tareas, sistemas de integración continua e incluso nuestra herramientas de comunicación interna.

Además de la automatización de una parte del proceso, un mergebot incide directamente en la productividad de los desarrolladores ya que evita los temidos cambios innecesarios de contexto. Con un ciclo pull request clásico, alguien debe "pulsar el botón de merge".

Orquestación DevOps automatizada: mergebots

Ya hemos hablado sobre Plastic SCM en Genbeta Dev, un control de versiones distribuido desarrollado por Codice Software en el Parque Tecnológico de Boecillo (Valladolid). La solución que proponen para solventar todos esos problemas son los mergebots, los cuales permite automatizar merges y orquestar las tareas necesarias hasta la creación final de la build final.

Es decir, por un lado, son capaz de automatizar hasta el 30 % de las integraciones de código que hasta ahora eran manuales y lo hacen en base a reglas previas; por otro lado, son capace de lanzar builds, lanzar integración continua, ejecutar todos los tests y una vez el proceso ha concluido satisfactoriamente, integrarlo en la rama principal.

Todo esto de manera automatizada apoyándose en el stack tecnológico que ya cuenta con xmerge y semanticmerge para evaluar la viabilidad de la integración.

Dos ejemplos de mergebots: TrunkBot y ConflictsBot.

TrunkBot está conectado al servidor central de Plastic SCM esperando a que una rama sea etiquetada como reviewed. Está diseñado para cumplir con la metodología Trunk Based Development cuyo éxito se basa en las ramas por funcionalidad de vida muy corta. Es decir, una funcionalidad por branch.

Cuando un desarrollador ha terminado su tarea puede marcarla como resuelta lo que avisará al revisor para que revise el código y valide la tarea. El TrunkBot confirmará que el código ha sido revisado y lanzará los pasos configurados en el CI integrando la rama si puede resolver los conflictos. Recordemos que Plastic SCM utiliza una serie de motores de merge sintacticos y semanticos para facilitar la tarea. Si por el contrario no es posible, avisará al responsable para resolver los conflictos de forma manual y volver arrancar el proceso.

Conflictsbots está orientado a inspeccionar cualquier problema relacionado con los merges automáticos de las tareas marcadas como "resolved". Si existe algún conflicto notificará a los usuarios y reabrirá la tarea. Si todo es correcto, es el encargado de validar el proceso previo de Trunkbot para poder hacer la integración.

Cada mergebot cuenta con una configuración específica para definir los pasos que debe seguir que podéis ver en la documentación de Plastic SCM.

Ver todos los comentarios en https://www.genbeta.com

VER 1 Comentario

Portada de Genbeta