Herramientas para el día a día de un Programador de Drupal: Git, Drush, Features y otras herramientas
La Experiencia de la Cámara de Comercio de Sevilla
Francisco LealFrancisco Pérez
Venimos de una Web en ASP “a pelo”,Desarrollada por una empresa externa
!!Arrancamos…Un poco de Contexto!!
Nuevo MODELO ( Julio 2011)
1. Máxima Autonomía para los Usuarios2. Escalabilidad de la Solución3. Posibilidad de Integrar con el CRM4. Construcción de Web sin saber Programar
Demasiadas Manos tocando sobre un mismo proyecto
Trabajo directamente sobre producción
Ningún Control de los Desarrollos
La SITUACIÓN
“Proyectos mantenidos y gestionados de forma aislada, desarrollados por varias
personas con el máximo nivel de automatización a la hora de desplegar el
Producto Final”
Cada Proyecto es Independiente, y a la vez es creado por mucha gente.
Simplifiquemos el Multisite.
VS
Romper el multisite !!
Pero con pies de plomo:
Recordar que tenemos Backups diarios de entorno. Tomaremos backup aislado de site. Desplegaremos el nuevo site usando para ello una
distribución base de nuestros proyectos. Adaptaremos configuración htaccess y apache.
Repositorio y Distribución de Base
Creación almacén que sirva de entorno de aprendizaje donde poder integrar el trabajo del equipo
Crearemos una maquina virtual con una distribución base por defecto y lo usaremos como campo de entrenamiento, trinchera y cajón desastre, formación y más formación.
Drupal + Shell Scripting = DRUSH
Herramienta de terminal que agilizará nuestras acciones diarias, de uso obligado
en nuestro día a día.
Instalar una distribución nueva
drush si, drush status
Descargar, activar y probar modulos nuevos
Drush dl, drush en, drush dis, drush pmudrush pmi
Realizar copias de base de datos
Listado de modulos y listado de features
Tareas Diarias más Comunes
Drush sql-dump –result-file=../mibackup.sql
Drush pml y drush fl
Creación de una base de datos
Mysql -u <usuario> -p <password> o mysqladmin -u root -p <pass> create bbdd;
Instalamos la distribución con un solo comando
Drush si standard –locale=ed –db-url-mysql://presentacion:password@localhost:8080/presentacion –account-name=admin –account-pass=password –[email protected] --clean-url=1 –site-name=”Nombre del sitio” [email protected]
Drush makeEn el directorio de nuestra distribución
ejecutardrush make-generate nombre_archivo.make
Generará el archivo .make con las dependencias necesarias
En el directorio raíz de nuestro servidor drush make nombre_archivo.make
miproyecto
Se generará un directorio que contiene todos los proyectos que hemos especificado
en el archivo .make
Abstracción de la configuración a código.
VentajasVersiones de códigoSeparamos contenido de configuraciónAyuda a tener controlados los conflictosParcheo y desarrollo directo a featureMódulos de ayuda: strongarm y diffIntegración con drush (drush fl, drush fr, drush fu)
Features
Cuando creamos una feature esta crea un archivo llamado “feature-name.module”
Es un fichero de libre modificación (sólo debemos respetar el include)
Podemos implementar nuestros propios hooks e incluir nuestras propias plantillas a la
feature
Features
¿Cual es la mejor forma de trabajar con features?
¿Mejor manera de estructurarlas? ¿Featurizalo todo usando protocolos? ¿Featuriza funcionalidades atomicas y luego
crear más features que la complementen? ¿Regenerar la feature con todas las nuevas
funcionalidades añadidas?
Standars drupal
https://www.drupal.org/coding-standards
https://www.drupal.org/project/coder
https://www.drupal.org/documentation/modules/features
https://www.drupal.org/project/kit
Sistema de control de versiones para nuestros ficheros
Proporciona un completo historial de revisiones, esto es, una bitácora de todos
los cambios que pueda sufrir un archivo con el paso del tiempo.
No requiere de un almacén o repositorio central
Cada copia de un proyecto es autosuficiente y completa
Cualquier copia se puede actualizar contra otra
Volvemos a encontrarnos en un estado estable y normal donde no hay cambiosY no tenemos nada que añadir a seguimiento y todos está comiteado/asegurado
Git diff
Consultamos la herramienta de diferencias para comparar el estado anterior y el nuevo estado