presentación jornada drupal sevilla febrero 2015

77
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 Leal Francisco Pérez

Upload: javier-prada

Post on 24-Jul-2015

68 views

Category:

Education


2 download

TRANSCRIPT

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

¿Qué esperáis dela Charla de hoy?

¿Herramientas?

¿Experiencias?

¿Contactos?

¿Cerveza…?

Venimos de una Web en ASP “a pelo”,Desarrollada por una empresa externa

!!Arrancamos…Un poco de Contexto!!

¡En verano de 2010

la empresa

¡Heredamos uno de sus Desarrolladores para todas las

APLICACIONES!

¡Sin Pasta y con Mil Peticiones,Decidimos cambiar el modelo!

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

Fiebre de los Gestoresde Contenidos

Primer Proyectocon

Septiembre 2011

!!Empezamos a hacer Webs como Churros!!

Y a integrar las Webs con nuestros sistemas de

Gestión

Crecimiento EXPONENCIALDE PROYECTOS DRUPAL 7

Crecimiento EXPONENCIAL DE PERSONAS TRABAJANDO EN ESOS

PROYECTOS

Demasiadas Manos tocando sobre un mismo proyecto

Trabajo directamente sobre producción

Ningún Control de los Desarrollos

La SITUACIÓN

Tenemos montado un MultiSITE!!!!

Y encima la TECNOLOGÍA !!!

El DESMADRE!!!!!!!!!!

¿Otro cambio

de Modelo?

EL RETO NO ES RESOLVER LO COMPLEJO

SINO CONVERTIRLO EN

ALGO MÁS SENCILLO!!!

“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”

1º PASO

Cada Proyecto es Independiente, y a la vez es creado por mucha gente.

Simplifiquemos el Multisite.

VS

Independizar Cada WEB

Virtualización

2º PASO

Trabajo directamente sobre producción

Se crearán 3 Entornos :

Desarrollo PRE PRODUCCIÓN

Mucho OJO!!!....

Que todo está en PRODUCCIÓN!!

3º PASO

Ningún Control de los Desarrollos

Trabajemos con un control de Proyectos y de Versiones

4º PASO

Muchas Manos tocando en un mismo proyecto

Definamos un Flujo de Trabajo : Integración Continua

Ya Para Nota: Automatizar todo lo POSIBLE!!!

Automatizar todo lo Posible

Drush!!!, Features !!! Jenkins !!!

MANOS A LA OBRA!!!

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.

Formación del Equipo en:

Drush Features

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

DRUSH

Creación de una base de datos

Mysql -u <usuario> -p <password> o mysqladmin -u root -p <pass> create bbdd;

Descargamos distribución deseada

Drush dl drupal –drupal-project-rename=miproyecto

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]

Se completa la instalación.

Descargamos algunos módulos

Drush dl diff devel features

Activamos los módulos

Drush en diff devel features

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

DRUSH MAKE

Features

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

Bibliografía

http://www.drushcommands.com

https://github.com/drush-ops/drush

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

Inicializamos nuestro nuevo repositorio:

Git init

Visualizamos el estado de nuestro repositorio en todo momento

Git status

Añadimos archivos al seguimiento de nuestro repositorio:

Git add

Aseguramos nuestros cambios, sean permanentes o no!!

Git commit -m “mi mensaje”

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

Añadimos una nueva modificación

Git diff

Consultamos la herramienta de diferencias para comparar el estado anterior y el nuevo estado

Git log

Consultamos el log de todos los commits que hemos realizado

Git revert …....

Deshacemos el cambio

Git reset –hard (metodo peligroso de hacer cualquier cosa)

Git checkout <archivo>

Descartamos un cambio

Gracias por vuestra Atención