Herramienta ya conocida para deploy PHP
Hace un tiempo ya hablamos sobre esta herramienta de deploy PHP. Ahora nos sorprende gratamente con una nueva versión reescrita usando componentes Symfony 3 y usando Monolog para los logs.
Mejoras
Aunque la anterior versión ya usaba el formato YAML para la configuración de los despliegues, formato más legible que otros como json, en esta versión ha unificado toda la configuración en un solo fichero de todos los entornos:
magephp:
environments:
production:
user: app
branch: master
host_path: /var/www/myapp
releases: 4
exclude:
- ./var/cache/*
- ./var/log/*
- ./web/app_dev.php
hosts:
- webserver1
- webserver2
- webserver3
pre-deploy:
- git/update
- composer/install
- composer/dump-autoload
on-deploy:
- symfony/cache-warmup: { env: 'dev' }
- symfony/assets-install: { env: 'dev' }
- symfony/assetic-dump: { env: 'dev' }
on-release:
post-release:
post-deploy:
Por otra parte, el usar paquetes de un framework con una comunidad tan grande detrás como Symfony, puede hacer que crezca conjuntamante recibiendo las mejoras que vayan recibiento estos paquetes, y simplifica el mantenimiento de lo que es estictamente Magallanes.
Magallanes, Ansistrano, Deployer… ¿Que sistema uso?
Todos estos sistemas son buenos y contienen las características básicas que debemos buscar en cualquier sistema de despliegue:
- Multi host
- Ejecución de comandos
- Distintas etapas para la ejecución comandos (Pre-deploy, on-deploy…)
- Poder guardar distintas releases
- Opción de mantener carpertas y ficheros compartidos entre releases
- Posibilidad de rollback
- Distintas estrategias de deploy (rsync, git, tar…)…
Lo bueno de usar sistemas como magallanes o deployer, es que la dependencia de este estos sistemas viene en el fichero composer.json, con lo que, para que cualquier desarrollador pueda desplegar, sólo tendrá que ejecutar composer install, que además tiene que hacer de todas formas para instalar las demás dependencias del proyecto.
Para usar ansistrano, el desarrollador deberá instalar aplicaciones adicionales, por otra parte, se basa sobre el estandar ansible, con todo lo que eso conlleva y tiene una comunidad que va creciendo cada vez más detrás.