Hero

Como hacer una distribución Drupal usando Drush Make

Abril 30, 2014

enzo
Drupal

Anteriormente había compartido los videos sobre Como crear una distribución Drupal - Partes #1 y #2 y aunque es funcional y se puede distribuir sin ningún tipo de problema, queda el problema que siempre en el git de desarrollo de la distribución debemos guardar una version de los módulos y themas utilizados, incrementando de esta forma el tamaño de nuestros repositorio.

Hace un tiempo había notado que los releases de mis distribuciones eran diferentes a los hechos por otras personas con mas experticia, en términos de como se aprecian los releases que dan mas archivos de descarga e informan el estado de las versión de los módulos y temas respecto de la última versión. Si lo acepto me daba envidia pero de la buena que dicen :P.

Finalmente mientras realizaba la version de la distribución OpenPolitic puede crear el release https://drupal.org/node/2230351 el detalle del release se puede apreciar en la siguiente imagen.

distro release details 0

Como se puede ver es muy informativo sobre si ya es hora de hacer un nuevo release de nuestra distribución, ademas como opciones para bajar la distro sin el core de Drupal para los usuarios expertos.

Bueno para lograr el resultado anterior es necesario hacer un distro mediante algunos comandos de Drush y permitiendo que nuestras distribución consuman menos recursos en términos de tamaño de nuestros repositorios.

Veamos el procedimiento paso a paso.

  1. Preparar nuestro ambiente de Drush.

Los sys admin de drupal.org crearon una seria de comandos para ayudar a hacer el proceso de empaquetado y distribución en Drupal.org mas fácil, estos comandos están en el proyecto https://drupal.org/project/drupalorg_drush, para instalarlo seguiremos las siguientes instrucciones. ( se que funcionan en Mac y Linux)

$ git clone [tu-usuario]@git.drupal.org:project/drupalorg_drush.git drupalorg_drush

El clonado lo puedes hacer en cualquier directorio de tu sistema, luego debemos re-ubicarlo para que drush lo encuentre.

$ mkdir ~/.drush/commands # IF DONT EXIST
$ mv drupalorg_drush ~/.drush/commands/

Ahora debemos hacer que drush reconozca el comando borrando el cache de Drush

$ drush cache-clear drush

Si todo ha transcurrido con éxito solo debemos probar si los comando están disponibles, para ello ejecutamos el comando

$ drush verify-makefile

Si ves algún error, pero reconoce el comando la instalación ha sido satisfactoria.

  1. Crear y generar archivos para el make de la distribución.

Para poder hacer la empaquetado de nuestra distribución debemos hacer una serie de archivos que serán interpretados por Drush en el sitio Drupal.org a la hora de hacer el release, veamos los archivos uno por uno.

Todos los archivos deben ubicarse dentro de la carpeta de nuestro profile de Distribución, recuerde la distribución es el profile no sus dependencias de eso se encargara del Drush make.

2.1 drupal-org.make

Este archivo define todos los módulos de terceros, los temas y las bibliotecas que utiliza nuestra distribución.

Este archivo es utilizado en los siguientes procesos:

  • Ejecución de comando para la construcción del release de nuestra distribución en Drupal.org.
  • Cuando drush make construye el perfil de instalación de forma recursiva. Más sobre esto más adelante.

Un ejemplo de este archivo podría ser

core = 7.x
api = 2
projects[admin_menu][subdir] = contrib
projects[admin_menu][version] = "3.0-rc4"
projects[advanced_help][subdir] = contrib
projects[advanced_help][version] = "1.1"

Puede apreciar un ejemplo completo de una distribución en http://drupalcode.org/project/plato_tipico.git/blob/HEAD:/drupal-org.make, como ya habra imaginado si su distribución tiene decenas de módulos esto puede ser un trabajo muy engorroso. Bueno por suerte podemos generar este archivo usando drush usando una instalación funcional de nuestra distribución como se aprecia a continuación.

$ drush generate-makefile drush-org.make

Este comando tomara los módulos y temas activos, así como las librerías y generar el archivos con el nombre indicado. Si un modulo esta desactivado no se usara en la generación.

La propiedad subdir no es generada por que se asume que debería ser la localización standard, pero si deseamos algo mas especifico siempre podemos hacer cambios al archivos por nuestra propia cuenta.

2.2 drupal-org-core.make

Este archivo es opcional y solo mandatorio si nuestra distribución requiere parches al núcleo de Drupal o bien una version dev o una revisión específica almacenada en Git. De esta forma le informamos al sistema de release de Drupal.org

Un ejemplo de este archivo podría ser

api = 2
core = 7.x
projects[drupal][type] = core
projects[drupal][version] = 7.12
projects[drupal][patch][] = http://drupal.org/files/issues/object_conversion_menu_router_build-972536-1.patch
projects[drupal][patch][] = http://drupal.org/files/issues/992540-3-reset_flood_limit_on_password_reset-drush.patch
;projects[drupal][patch][] = http://drupal.org/files/i673020_deliver_1-make_0.patch

Si le interesa puede ver la versión de la distribución Plato Típico http://drupalcode.org/project/plato_tipico.git/blob/HEAD:/drupal-org-core.make

2.3 build-[distro].make

Este archivo se utiliza para construir un sitio web totalmente funcional que incluye core, el propio código del perfil de la distribución y todas sus dependencias.

Drush make tiene una función en la que si se descarga algo que incluye un archivo .make, este se ejecutara recursivamente.

Este archivo puede ser algo confuso porque puede parecer una función recursiva infinita, pero permite que un developer se descargue la distribución sin el coreo y usando el siguiente comando se construya toda la instalación como se muestra a continuación.

$ drush make build-plato_tipico.make /var/www

Notece que solo debemos remplazar [distro] por el nombre de nuestra distribución.

Si como se puede imaginar es algo para usuarios avanzados, pero es necesario para que tu distro este disponible para todo tipo de usuarios, un archivo de ejemplo luciría similar al siguiente listado

api = 2
core = 7.x
projects[drupal][version] = 7.12
projects[openpublic][version] = 1.0-beta6

Puede apreciar al build de la distribución Plato Típico en http://drupalcode.org/project/plato_tipico.git/blob/HEAD:/build-plato_tipico.make

Al completar estos pasos solo sera necesario subir los archivos de nuestro profile excluyendo los directorios módulos, temas y si se configura bien el de libraries.

Espero que haya sido de su agrado y que con este granito de arena quizá comiencen a florecer las distribuciones creadas en países de habla hispana.

Recibe consejos y oportunidades de trabajo 100% remotas y en dólares de weKnow Inc.