Download - Magallanes - PHPmvd Meet Up - Mayo 2014
![Page 1: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/1.jpg)
MAGALLANESdeployment tool
Mayo 2014
![Page 2: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/2.jpg)
¿Quién soy?• PHP Developer
‣ en @AciliaInternet
• Fulltime Nerd
‣ a la Dungeons & Dragons
• Dog ownerandresmontanez.com
![Page 3: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/3.jpg)
¿Qué es Magallanes?• Una Herramienta
• 100% PHP
• Para estandarizar deployments
• No se apega a ningún framework
• Ayudas para cualquier framework
• PSR-0, PSR-1, PSR-2 (php-fig.org)
![Page 4: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/4.jpg)
Lo dice GitHub
![Page 5: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/5.jpg)
¿Cómo surge?• Forma ordenada de publicar la aplicación
• Sólo con shell script no alcanza
• Usar lo que ya conocemos y tenemos
• Configuración persistente
• Capistrano es muy complicado y requiere ruby
![Page 6: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/6.jpg)
Instalando• Composer
"andres-montanez/magallanes": "1.0.*"
• User space
Descargando el código de magephp.com
bin/mage install --installDir=~/magallanes
• System Wide
bin/mage install --systemWide --installDir=/opt/magallanes
![Page 7: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/7.jpg)
¿Cómo funciona?• Configuración local y persistente• Stages
• Pre Deployment• Deployment
• Release• Post Release
• Post Deployment• Estrategias de Deployment• Releases• Tasks
![Page 8: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/8.jpg)
Iniciando un Proyectomage init --name=“My app" —-email=“[email protected]”
‣ .mage‣ config
‣ general.yml‣ tasks‣ logs
![Page 9: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/9.jpg)
Creando un Entornomage add environment --name=“production" —-enableReleases
‣ .mage‣ config
‣ environments‣ production.yml
![Page 10: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/10.jpg)
Ejemplo de Entorno
![Page 11: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/11.jpg)
El primer Deployment
mage deploy to:production
• Configuración de production.yml
• Se copia el código a cada Host
• Se ejecutan las Tasks en orden
![Page 12: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/12.jpg)
Ejemplo de Ejecución
![Page 13: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/13.jpg)
Stage: Pre-Deployment
• Es lo primero en ejecutarse• Es opcional• Casos de uso
• Actualizar código• Instalar vendors• Pre-procesos
• Assets• Assetics• Compilación• etc
![Page 14: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/14.jpg)
Stage: Deployment
• Se ejecuta por cada Host definido
• No necesita tener Tasks definidas
• Casos de uso
• Deployment de código
• Crear enlaces simbólicos
• Realizar WarmUps de cachés
![Page 15: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/15.jpg)
Estrategias de Deployment
• Rsync
• Es la estrategia usada cuando no hay releases
• TarGz
• Es la estrategia usada cuando hay releases
• Disabled
• No copia ningún archivo
• Git Rebase (experimental)
• No se copia código, se hace rebase en el destino
![Page 16: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/16.jpg)
Ejemplo de Estrategia
![Page 17: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/17.jpg)
Stage: Post-Deployment
• Se ejecuta al final del deployment
• El opcional
• Casos de uso
• Limpiar Cachés
• Habilitar alertas
• Lanzar notificaciones
![Page 18: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/18.jpg)
Stage: Releases• Si están habilitados los releases…
• Release• Se realiza el cambio de symlink
• Post Release• Se pueden ejecutar Tasks• Caso de Uso
• Purgar APC• Purgar Cachés Persistenes• WarmUp de Cachés especiales
![Page 19: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/19.jpg)
Usando Releases
• Ocupa más espacio en el servidor• No siempre el rollback es automático
• Cambios en Base de Datos• Migraciones
• Mantener histórico de los deployments• Poder volver a una versión anterior de forma fácil y rápida
Pros
Contras
![Page 20: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/20.jpg)
Oops… Rollback!
• Configuración de production.yml
• Se cambia el symlink en cada Host
• Se ejecutan las Tasks RollbackAware
mage releases rollback --release=-1 to:production
![Page 21: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/21.jpg)
Tareas Incluidas• SCM (solo git)
• Update (scm/update)• Symfony 2
• Assetics Dump (symfony2/assetics-dump)• Assets Install (symfony2/assetics-dump)• Cache Clear (symfony2/cache-clear)• Cache Warmup (symfony2/cache-warmup)
• Magento • Clear Cache (magento/clear-cache)• Clear Full Page Cache (magento/clear-full-page-cache)
![Page 22: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/22.jpg)
Tareas Propias• Son clases PHP comunes y corrientes• Extienden de Mage\Task\AbstractTask• Deben pertenecer al namespace Task• Obliga a implementar getName() y run()• Se almacenan en el directorio .mage/tasks• Casos de uso
• Operaciones de File System• Ejecución de comandos propios• Interacción con otros sistemas
![Page 23: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/23.jpg)
Ejemplo de Custom Task
![Page 24: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/24.jpg)
Resultados del Task• Retorna true
• La tarea se ha ejecutado correctamente• Retorna false
• La tarea se ha ejecutado con error• Lanza Mage\Task\ErrorWithMessageException
• La tarea se ha ejecutado con error y hay mensaje• Lanza Mage\Task\SkipException
• La tarea se ha omitido
![Page 25: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/25.jpg)
Tasks y Releases• Mage\Task\Releases\IsReleaseAware
• El task sabe que está siendo ejecutado en un entorno con releases y obtiene acceso desde la raíz
• Mage\Task\Releases\RollbackAware
• El task sabe que está siendo ejecutado en un rollback. Si no lo implementa se omite.
• Mage\Task\Releases\SkipOnOverride
• El task se omite en un --releaseOverride
![Page 26: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/26.jpg)
Comandos• init, install, upgrade y add• list environments• lock to:production y unlock to:production• deploy to:production —branch=“dev1”• deploy to:production --overrideRelease• releases rollback --release=-1 to:production• releases list to:production• compile• version
![Page 27: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/27.jpg)
Mage Tips• APC
• Borrar cache con cURL• Reiniciar php-fpm o Apache
• Shared Folder• Directorio externo a los releases• Se engancha con enlaces simbólicos
• Ramas• “Arrastrar” la configuración entre ramas• Asegurarse de hacer track de la rama
• ¿Cuando no usar Releases?• Cuando no importa tener un histórico• O no se tiene necesidad de hacer rollback
• Impacto del releaseOverride• Puede que en algunas aplicaciones no se reflejen cambios• No es la solución para todo
![Page 28: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/28.jpg)
Roadmap• Más Tasks
• Composer
• File System
• Parallel Deployment
• Optimizar estrategias de Deployment
• Más opciones de Configuración
• Tests
![Page 29: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/29.jpg)
¡Gracias!
¿Preguntas?
![Page 30: Magallanes - PHPmvd Meet Up - Mayo 2014](https://reader034.vdocumento.com/reader034/viewer/2022052311/557bdb09d8b42aac4c8b4bec/html5/thumbnails/30.jpg)
Más Info• Código: github.com/andres-montanez/Magallanes
• Documentación: magephp.com
• API: api.magephp.com/1.0
• Packagist: más de 2100 instalaciones
• Social: @MagePHP
• Contacto: andresmontanez.com