Blog

Acelerando y mejorando los desarrollos de drupal con makefiles

23/07/2015

En el artículo anterior “Arquitectura de proyectos en drupal (según ASPgems)se hizo un repaso de los criterios que el equipo de drupal de ASPgems sigue en los desarrollos de sus proyectos. Motivados por mejorar de manera continua, los últimos esfuerzos se centran en mejorar la productividad de los desarrolladores y la mantenibilidad de los proyectos en el tiempo.

Hoy hablaremos de los makefiles y cómo nos facilitan la vida a la hora de comenzar un proyecto nuevo, mantenerlo y permitir que otros compañeros se unan de forma automática y en cualquier momento.

Los makefiles son ficheros de texto que se utilizan para indicar de dónde se descarga el código (de la comunidad y de terceros) que el equipo utiliza para el desarrollo del proyecto: núcleo de drupal, módulos contribuidos, librerías, temas,…

Para el equipo, el primer beneficio que se obtiene es que permite estandarizar la estructura de los proyectos, ya que en los ficheros, además de indicar de dónde se tiene que descargar el código, se puede indicar la versión (si hubiera más de una) y dónde se guardará dentro del proyecto.

¿Cómo utilizamos los makefiles?

Estos ficheros se gestionan con drush y su extensión make, que se encarga de parsear los ficheros y descargar el código desde las fuentes que se indica en ellos de manera automática.

Su ejecución simplificada sería: drush make fichero.make. De esta manero estamos solicitando que se descargue todo el código indicado en el fichero.make en el directorio de trabajo actual.

¿Cuántos makefiles usamos en los proyectos?

La experiencia nos ha llevado, de momento, a utilizar tres ficheros principales:

  • base.make: contiene la información del código contribuido que es común a todos los proyectos, es decir, módulos, temas, librerías,…, que instalamos prácticamente al inicio de cada nuevo desarrollo. El beneficio que nos proporciona es que el equipo está familiarizado con este código y lo gestiona y configura de manera rápida.

  • contrib.make: contiene la información del código que es propio del proyecto y que no desarrolla el equipo (código contribuido por la comunidad). Inicialmente está vacío y según evolucione el proyecto se irán incluyendo las fuentes del código adicional. El beneficio que nos proporciona es que cualquiera que se una al proyecto, con ver este fichero, puede centrarse en comprender las necesidades y peculiaridades del proyecto.

  • devel.make: contiene la información del código que se utiliza únicamente para desarrollar y que todo el equipo debe conocer y utilizar para depurar el código que se desarrolle. El beneficio que nos proporciona es que todos utilizamos las mismas herramientas para el trabajo diario y nos permite entre todos aprender a utilizarlas y sacarles partido en pro de un código desarrollado más estable.

Un paso más allá

Usar drush make y makefiles únicamente aporta una ínfima parte del potencial de este sistema de trabajo. Una vez más, la experiencia pone de manifiesto que la automatización de ciertos procesos es un paso natural para obtener mayores beneficios.

En el repositorio público Newton se encuentran una serie de scripts (que utilizan drush y makefiles) que aportan funcionalidades más potentes. Los más importantes nos permiten crear la estructura de un proyecto, unirse a un proyecto ya en desarrollo y desplegar el código a los entornos de preproducción y producción. A grandes rasgos:

  • Proceso de inicialización de proyecto: este script se encarga de ejecutar los ficheros base.make y devel.make (se encuentran en el repositorio), crear un perfil de instalación con el nombre del proyecto que le indiquemos e instalar la distribución de drupal.

  • Proceso de unión a un proyecto en desarrollo: este script se encarga de clonar el repositorio del proyecto que le indiquemos, ejecutar los tres makefiles e instalar la distribución utilizando el perfil propio del proyecto. También nos da la opción de traer una copia de la base de datos de preproducción y cargarla en local.

  • Proceso de despliegue a entornos de preproducción y producción: este script copia el código desarrollado en local y los makefiles (salvo el fichero devel.make) en el entorno indicado, procesa los makefiles, actualiza la base de datos, limpia cachés y revierte features (si las hubiera).

El beneficio de los dos primeros puntos radica sobre todo en la rapidez con la que un desarrollador puede empezar a trabajar en un proyecto cualquiera. El beneficio del tercer punto facilita y minimiza los errores en los despliegues.

Además, este último script está pensado para que en un futuro permita ampliar las tareas que se ejecuten en los distintos entornos, para hacerlo aún más potente y versátil.

Como se dijo al principio, este sistema de trabajo ha evolucionado a lo largo de los años con el fin de facilitar la vida a los desarrolladores, pero no está exento de crítica constructiva. ¿Qué opináis del sistema? ¿Cómo lo mejoraríais?

 

También te puede gustar…

Caso de éxito: Binfluencer

Caso de éxito: Binfluencer

Binfluencer es otra de las empresas que ha confiado en ASPgems. En este caso de éxito te contamos nuestra colaboración con ellos.

ASPgems icon
C/ Sextante, 9
28023 Madrid,
España

Hablemos.

A %d blogueros les gusta esto: