"Piensa en la automatización"
¡Hola y bienvenid@s!
Mi nombre es José J. Peleato Pradel.
Disclaimer
En la presente sesión vamos a conocer que es Deployer v6.8.0, conocer cómo nos puede ayudar en la automatización de procesos, cómo podemos definir una metodología en nuestro flujo de despliegues y además, conoceremos cómo implementar esta herramienta con WordPress.
Momento de reflexión, Deployer es una herramienta más y cómo todo aparejo, debemos valorar en que nos puede ayudar y si lo puede hacer =)
«A deployment tool written in PHP with support for popular frameworks out of the box» – Deployer.
Deployer es una herramienta construida en PHP para el desarrollo web, nos permite la automatización de despliegues con múltiples tareas (cualquier tarea) en diferentes entornos (multiple staging environments), todo ello, a través de un único archivo de configuración.
El despliegue de aplicaciones consiste en todas las actividades que hacen que un sistema de software esté disponible para su uso.
Normalmente, se realizan tareas repetitivas para subir al servidor la última versión estable del código, ya sea a través la instalación de dependencias de Composer o paquetes NPM, copilar SASS, minificar JS, etc.
Acciones que de forma manual o semi manual hacen que invirtamos tiempo no productivo.
Y es ahí, dónde Deployer nos puede ayudar, creando la automatización de procesos, de manera que se reduzca el tiempo necesario para hacer llegar las nuevas funcionalidades o correcciones a los usuarios finales y se minimice los errores humanos.
¿Como funciona?
Un mecanismo que combina el uso de Git (con el repositorio especificado) y SSH.
Facilita una de las acciones más habituales en el ciclo de vida del software, los despliegues, pudiendo así, tener un control total de que se publica a demo (alpha), preproducción (beta) o producción.
Además, en caso de error en la versión liberada, nos permite poder deshacer el último despliegue de una forma rápida y segura.
Recipes
Las recipes son la abstracción de más alto nivel de Deployer, configuraciones predeterminadas de frameworks.
Dicho de otra forma, puntos de partida con las necesidades básicas para proyectos de Software, cómo por ejemplo: Symfony, Laravel, WordPress, etc.
Estructura directorios
Directorio | Descripción |
---|---|
releases | Carpeta donde se guarda el código desplegado. Por defecto Deployer guarda los últimos 5 despliegues realizados en carpetas numeradas (1, 2, 3, etc.) de manera que el código correspondiente al primer despliegue se encontrará en la carpeta /releases/1, el del siguiente en /releases/2 y así sucesivamente. |
current | Enlace simbólico a la carpeta que contiene el último despliegue y por tanto la versión más actualizada de nuestra aplicación. Esta carpeta será la que deberemos configurar como root en el servidor web. |
shared | Ficheros y directorios compartidos. Cada una de las carpetas en releases contendrá enlaces simbólicos a los directorios y ficheros compartidos en shared. |
Si realizamos otro despliegue con Deployer veremos que se coloca en la carpeta /releases/2 y actualiza el enlace simbólico current para que apunte a esta carpeta.
Esto nos permite realizar despliegues sin necesidad de parar la aplicación y mantener las releases anteriores en caso de que algo vaya mal y queramos hacer un rollback.
Hooks
En Deployer existen dos ganchos donde encolar la ejecución de nuestras tareas personalizadas: before y after.
before('deploy', 'slack:notify');
after('deploy:failed', 'slack:notify:failure');
Instalación
Requisitos
Global
curl -LO https://deployer.org/deployer.phar
mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep
Composer
composer require deployer/deployer --dev
Lando + Composer
lando composer require deployer/deployer --dev
# .lando.yml
# See: https://docs.devwithlando.io/config/tooling.html
tooling:
dep:
service: appserver
desription: run deployer commands
cmd:
- "vendor/bin/dep"
Es muy importante saber que Deployer ejecuta todas las tareas en el lado del servidor vía SSH, eso significa, que sí en nuestro archivo tenemos tareas que dependen de software cómo NPM, Yarn, Composer, etc, deberán estar instalados en el servidor remoto.
Comandos
Comando | Descripción |
---|---|
dep [command] | Ejecutar Deployer de forma global. |
php vendor/bin/dep [command] | Ejecutar Deployer con instalación a través de Composer. |
lando dep [command] | Ejecutar Deployer a través de Lando y Composer. |
Todos los comandos se pueden ejecutar en modo "verbose": -v, -vv o -vvv
Comando | Descripción |
---|---|
lando dep init | Inicializa y crea el archivo deploy.php. |
lando dep list | Listado de todos los comandos y opciones de Deployer. |
lando dep deploy [stage] | Desplegar proyecto según entorno declarado. |
lando dep rollback [stage] | Revertir último despliegue a la versión anterior. |
lando dep cleanup [stage] | Limpiar versiones antiguas en el servidor remoto. |
lando dep run "command" --stage [stage] | Ejecuta el comando especificado en el servidor remoto. |
lando dep ssh [stage] | Conectar vía SSH al servidor remoto. |
lando dep [task] | Ejecutar tarea especificada en el archivo deploy.php. |
¿Tod@s bien?
Ejemplo
En el futuro
Deployer es un proyecto con un gran respaldo en la comunidad GitHub, actualmente están trabajando en la nueva versión 7.0.0, dónde implementa un nuevo sistema de archivo de configuración basado en Yaml (.yaml o .yml).
Alternativas
¡FIN!
Simplemente, GRACIAS