SlideShare uma empresa Scribd logo
1 de 30
MAGALLANES
deployment tool
Mayo 2014
¿Quién soy?
• PHP Developer
‣ en @AciliaInternet
• Fulltime Nerd
‣ a la Dungeons & Dragons
• Dog owner
andresmontanez.com
¿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)
Lo dice GitHub
¿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
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
¿Cómo funciona?
• Configuración local y persistente
• Stages
• Pre Deployment
• Deployment
• Release
• Post Release
• Post Deployment
• Estrategias de Deployment
• Releases
• Tasks
Iniciando un Proyecto
mage init --name=“My app" —-email=“notify@my.app”
‣ .mage
‣ config
‣ general.yml
‣ tasks
‣ logs
Creando un Entorno
mage add environment --name=“production" —-enableReleases
‣ .mage
‣ config
‣ environments
‣ production.yml
Ejemplo de Entorno
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
Ejemplo de Ejecución
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
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
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
Ejemplo de Estrategia
Stage: Post-Deployment
• Se ejecuta al final del deployment
• El opcional
• Casos de uso
• Limpiar Cachés
• Habilitar alertas
• Lanzar notificaciones
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
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
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
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)
Tareas Propias
• Son clases PHP comunes y corrientes
• Extienden de MageTaskAbstractTask
• 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
Ejemplo de Custom Task
Resultados del Task
• Retorna true
• La tarea se ha ejecutado correctamente
• Retorna false
• La tarea se ha ejecutado con error
• Lanza MageTaskErrorWithMessageException
• La tarea se ha ejecutado con error y hay mensaje
• Lanza MageTaskSkipException
• La tarea se ha omitido
Tasks y Releases
• MageTaskReleasesIsReleaseAware
• El task sabe que está siendo ejecutado en un entorno
con releases y obtiene acceso desde la raíz
• MageTaskReleasesRollbackAware
• El task sabe que está siendo ejecutado en un
rollback. Si no lo implementa se omite.
• MageTaskReleasesSkipOnOverride
• El task se omite en un --releaseOverride
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
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
Roadmap
• Más Tasks
• Composer
• File System
• Parallel Deployment
• Optimizar estrategias de Deployment
• Más opciones de Configuración
• Tests
¡Gracias!
¿Preguntas?
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

Mais conteúdo relacionado

Mais procurados

Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaJorge Pacheco Mengual
 
.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0Luis Ruiz Pavón
 
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015 Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015 César Hernández
 
Control de Versiones con Subversion (SVN)
Control de Versiones con Subversion (SVN)Control de Versiones con Subversion (SVN)
Control de Versiones con Subversion (SVN)Fco Javier Lucena
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishJordi Llonch
 
Unit & Integration Testing
Unit & Integration TestingUnit & Integration Testing
Unit & Integration TestingJavier Carranza
 
Apache, getting the best version
Apache, getting the best versionApache, getting the best version
Apache, getting the best versionIvan Ortega
 
Ansible para Gestión de la configuración y Automatización
Ansible para Gestión de la configuración y AutomatizaciónAnsible para Gestión de la configuración y Automatización
Ansible para Gestión de la configuración y Automatizaciónsergiovier
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup
 
GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29Jorge Hidalgo
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenVíctor Leonel Orozco López
 
Java mission control para monitoreo, administración y profilig de aplicacion...
Java mission control para monitoreo, administración y profilig de aplicacion...Java mission control para monitoreo, administración y profilig de aplicacion...
Java mission control para monitoreo, administración y profilig de aplicacion...César Hernández
 
Un Framework de Triggers Rock Solid en Salesforce
Un Framework de Triggers Rock Solid en SalesforceUn Framework de Triggers Rock Solid en Salesforce
Un Framework de Triggers Rock Solid en SalesforceEsteve Graells
 
Spring Fácil: Cambios en el framework con Spring Boot
Spring Fácil: Cambios en el framework con Spring BootSpring Fácil: Cambios en el framework con Spring Boot
Spring Fácil: Cambios en el framework con Spring BootBelatrix Software
 
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 añosDesde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 añosVíctor Leonel Orozco López
 

Mais procurados (20)

Integracion Continua en Oracle ADF
Integracion Continua en Oracle ADFIntegracion Continua en Oracle ADF
Integracion Continua en Oracle ADF
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0
 
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015 Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
 
Control de Versiones con Subversion (SVN)
Control de Versiones con Subversion (SVN)Control de Versiones con Subversion (SVN)
Control de Versiones con Subversion (SVN)
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
 
Unit & Integration Testing
Unit & Integration TestingUnit & Integration Testing
Unit & Integration Testing
 
Apache, getting the best version
Apache, getting the best versionApache, getting the best version
Apache, getting the best version
 
Ansible para Gestión de la configuración y Automatización
Ansible para Gestión de la configuración y AutomatizaciónAnsible para Gestión de la configuración y Automatización
Ansible para Gestión de la configuración y Automatización
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 
Scrum overview
Scrum overview Scrum overview
Scrum overview
 
Proceso desarrollo de fábrica de software
Proceso desarrollo de fábrica de softwareProceso desarrollo de fábrica de software
Proceso desarrollo de fábrica de software
 
GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
 
Gradle vs Maven
Gradle vs MavenGradle vs Maven
Gradle vs Maven
 
Java mission control para monitoreo, administración y profilig de aplicacion...
Java mission control para monitoreo, administración y profilig de aplicacion...Java mission control para monitoreo, administración y profilig de aplicacion...
Java mission control para monitoreo, administración y profilig de aplicacion...
 
Un Framework de Triggers Rock Solid en Salesforce
Un Framework de Triggers Rock Solid en SalesforceUn Framework de Triggers Rock Solid en Salesforce
Un Framework de Triggers Rock Solid en Salesforce
 
Spring Fácil: Cambios en el framework con Spring Boot
Spring Fácil: Cambios en el framework con Spring BootSpring Fácil: Cambios en el framework con Spring Boot
Spring Fácil: Cambios en el framework con Spring Boot
 
MM19ES PWA Studio - Implementación y componentes
MM19ES PWA Studio - Implementación y componentesMM19ES PWA Studio - Implementación y componentes
MM19ES PWA Studio - Implementación y componentes
 
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 añosDesde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
 

Destaque (9)

Aplicación de CSS al DIV
Aplicación de CSS al DIVAplicación de CSS al DIV
Aplicación de CSS al DIV
 
Html5
Html5Html5
Html5
 
Exportar CmapTools a Moodle
Exportar CmapTools a MoodleExportar CmapTools a Moodle
Exportar CmapTools a Moodle
 
Html Xhtml
Html XhtmlHtml Xhtml
Html Xhtml
 
Presentación EVA FCEA UdelaR
Presentación EVA FCEA UdelaRPresentación EVA FCEA UdelaR
Presentación EVA FCEA UdelaR
 
Hojas de Estilo en cascada, CSS
Hojas de Estilo en cascada, CSSHojas de Estilo en cascada, CSS
Hojas de Estilo en cascada, CSS
 
Hablemos de diseno_diseño grafico libre
Hablemos de diseno_diseño grafico libreHablemos de diseno_diseño grafico libre
Hablemos de diseno_diseño grafico libre
 
Beyond the web: Mobile apps using Drupal & Ionic 2 - Drupal Dev Days Seville ...
Beyond the web: Mobile apps using Drupal & Ionic 2 - Drupal Dev Days Seville ...Beyond the web: Mobile apps using Drupal & Ionic 2 - Drupal Dev Days Seville ...
Beyond the web: Mobile apps using Drupal & Ionic 2 - Drupal Dev Days Seville ...
 
Patodeck
PatodeckPatodeck
Patodeck
 

Semelhante a Magallanes - PHPmvd Meet Up - Mayo 2014

Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesJose Luis Soria
 
Conociendo Griffon a Fondo
Conociendo Griffon a FondoConociendo Griffon a Fondo
Conociendo Griffon a FondoAndres Almiray
 
Desplegando Drupal con Capistrano
Desplegando Drupal con CapistranoDesplegando Drupal con Capistrano
Desplegando Drupal con CapistranoDavid Gil Sánchez
 
Herramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPKeopx
 
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Modernowpargentina
 
Git with gifs
Git with gifsGit with gifs
Git with gifsbetabeers
 
Argentesting 2017 - Taller de Jenkins
Argentesting 2017 - Taller de JenkinsArgentesting 2017 - Taller de Jenkins
Argentesting 2017 - Taller de JenkinsArgentesting
 
Monta una Infraestructura Big Data para tu Empresa - Sesión II
Monta una Infraestructura Big Data para tu Empresa - Sesión IIMonta una Infraestructura Big Data para tu Empresa - Sesión II
Monta una Infraestructura Big Data para tu Empresa - Sesión IIUrko Zurutuza
 
Drush Make & Feature Server - Drupal Camp Spain 2010
Drush Make & Feature Server - Drupal Camp Spain 2010Drush Make & Feature Server - Drupal Camp Spain 2010
Drush Make & Feature Server - Drupal Camp Spain 2010Atenea tech
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque prácticoPatxi Gortázar
 
Migración de datos en drupal 8
Migración de datos en drupal 8Migración de datos en drupal 8
Migración de datos en drupal 8Javier Gomez
 
Migrando Rails Apps entre Cloud y Bare Metal Servers
Migrando Rails Apps entre Cloud y Bare Metal ServersMigrando Rails Apps entre Cloud y Bare Metal Servers
Migrando Rails Apps entre Cloud y Bare Metal ServersEdwin Cruz
 

Semelhante a Magallanes - PHPmvd Meet Up - Mayo 2014 (20)

Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de despliegues
 
Dbdeployer
DbdeployerDbdeployer
Dbdeployer
 
Conociendo Griffon a Fondo
Conociendo Griffon a FondoConociendo Griffon a Fondo
Conociendo Griffon a Fondo
 
Open Build Service
Open Build ServiceOpen Build Service
Open Build Service
 
Desplegando Drupal con Capistrano
Desplegando Drupal con CapistranoDesplegando Drupal con Capistrano
Desplegando Drupal con Capistrano
 
Introduccion Java.ppt
Introduccion Java.pptIntroduccion Java.ppt
Introduccion Java.ppt
 
Drupal workflow
Drupal workflowDrupal workflow
Drupal workflow
 
Herramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMP
 
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
 
Seminario Jade 2014
Seminario Jade 2014Seminario Jade 2014
Seminario Jade 2014
 
Subprocesamiento Mùltiple
Subprocesamiento MùltipleSubprocesamiento Mùltiple
Subprocesamiento Mùltiple
 
Git with gifs
Git with gifsGit with gifs
Git with gifs
 
Argentesting 2017 - Taller de Jenkins
Argentesting 2017 - Taller de JenkinsArgentesting 2017 - Taller de Jenkins
Argentesting 2017 - Taller de Jenkins
 
Monta una Infraestructura Big Data para tu Empresa - Sesión II
Monta una Infraestructura Big Data para tu Empresa - Sesión IIMonta una Infraestructura Big Data para tu Empresa - Sesión II
Monta una Infraestructura Big Data para tu Empresa - Sesión II
 
Drush Make & Feature Server - Drupal Camp Spain 2010
Drush Make & Feature Server - Drupal Camp Spain 2010Drush Make & Feature Server - Drupal Camp Spain 2010
Drush Make & Feature Server - Drupal Camp Spain 2010
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
 
Migración de datos en drupal 8
Migración de datos en drupal 8Migración de datos en drupal 8
Migración de datos en drupal 8
 
Migrando CI a Docker
Migrando CI a DockerMigrando CI a Docker
Migrando CI a Docker
 
Migrando Rails Apps entre Cloud y Bare Metal Servers
Migrando Rails Apps entre Cloud y Bare Metal ServersMigrando Rails Apps entre Cloud y Bare Metal Servers
Migrando Rails Apps entre Cloud y Bare Metal Servers
 

Último

Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++luzgaray6
 
Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Leonardo J. Caballero G.
 
Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Leonardo J. Caballero G.
 
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxcalzadillasluis134
 
Presentación de html, css y javascript.
Presentación  de html, css y javascript.Presentación  de html, css y javascript.
Presentación de html, css y javascript.CeteliInmaculada
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOELIAMARYTOVARFLOREZD
 

Último (6)

Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++
 
Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024
 
Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024
 
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
 
Presentación de html, css y javascript.
Presentación  de html, css y javascript.Presentación  de html, css y javascript.
Presentación de html, css y javascript.
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
 

Magallanes - PHPmvd Meet Up - Mayo 2014

  • 2. ¿Quién soy? • PHP Developer ‣ en @AciliaInternet • Fulltime Nerd ‣ a la Dungeons & Dragons • Dog owner andresmontanez.com
  • 3. ¿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)
  • 5. ¿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
  • 6. 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
  • 7. ¿Cómo funciona? • Configuración local y persistente • Stages • Pre Deployment • Deployment • Release • Post Release • Post Deployment • Estrategias de Deployment • Releases • Tasks
  • 8. Iniciando un Proyecto mage init --name=“My app" —-email=“notify@my.app” ‣ .mage ‣ config ‣ general.yml ‣ tasks ‣ logs
  • 9. Creando un Entorno mage add environment --name=“production" —-enableReleases ‣ .mage ‣ config ‣ environments ‣ production.yml
  • 11. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 17. Stage: Post-Deployment • Se ejecuta al final del deployment • El opcional • Casos de uso • Limpiar Cachés • Habilitar alertas • Lanzar notificaciones
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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)
  • 22. Tareas Propias • Son clases PHP comunes y corrientes • Extienden de MageTaskAbstractTask • 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
  • 24. Resultados del Task • Retorna true • La tarea se ha ejecutado correctamente • Retorna false • La tarea se ha ejecutado con error • Lanza MageTaskErrorWithMessageException • La tarea se ha ejecutado con error y hay mensaje • Lanza MageTaskSkipException • La tarea se ha omitido
  • 25. Tasks y Releases • MageTaskReleasesIsReleaseAware • El task sabe que está siendo ejecutado en un entorno con releases y obtiene acceso desde la raíz • MageTaskReleasesRollbackAware • El task sabe que está siendo ejecutado en un rollback. Si no lo implementa se omite. • MageTaskReleasesSkipOnOverride • El task se omite en un --releaseOverride
  • 26. 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
  • 27. 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
  • 28. Roadmap • Más Tasks • Composer • File System • Parallel Deployment • Optimizar estrategias de Deployment • Más opciones de Configuración • Tests
  • 30. 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