PDF de programación - Magallanes Presentacion PHP MeetUp Mayo 2014

Imágen de pdf Magallanes Presentacion PHP MeetUp Mayo 2014

Magallanes Presentacion PHP MeetUp Mayo 2014gráfica de visualizaciones

Publicado el 14 de Enero del 2017
281 visualizaciones desde el 14 de Enero del 2017
605,1 KB
30 paginas
Creado hace 6a (01/05/2014)
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

‣ general.yml

‣ config

‣ 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

• Post Release

• Se realiza el cambio de symlink

• Se pueden ejecutar Tasks
• Caso de Uso

• Purgar APC
• Purgar Cachés Persistenes
• WarmUp de Cachés especiales

Usando Releases

Pros

• Mantener histórico de los deployments
• Poder volver a una versión anterior de forma fácil y rápida

Contras

• Ocupa más espacio en el servidor
• No siempre el rollback es automático

• Cambios en Base de Datos
• Migraciones

Oops… Rollback!

mage releases rollback --release=-1 to:production

• Configuración de production.yml
• Se cambia el symlink en cada Host

• Se ejecutan las Tasks RollbackAware

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

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 Mage\Task\ErrorWithMessageException

• La tarea se ha ejecutado con error y hay mensaje

• Lanza Mage\Task\SkipException

• La tarea se ha omitido

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

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
  • Links de descarga
http://lwp-l.com/pdf1696

Comentarios de: Magallanes Presentacion PHP MeetUp Mayo 2014 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad