Desde el entorno local hasta el despliegue en producción. Cómo trabajar con Magento 2 de la mejor manera y sentirnos cómodos desarrollando en el mejor framework de comercio electrónico del mercado
2. 2
@osrecio 30/06/2017
Óscar Recio
Lead Magento Developer
Mi previsión de #eCommerce para 2017 es:
"El humo se disipa"
@osrecio
osrecio
osrecio
osrecio.com
9. 9
@osrecio 30/06/2017
Setup
LAMP || MAMP
Linux/MacOS Apache + Mysql + PHP,
Es la opción más conocida popularmente
LEMP || MEMP
Linux/MacOS Nginx + Mysql + PHP,
Misma opción que L/MAMP pero con Nginx
LARAVEL VALET*
Sólo disponible para Mac
La forma más sencilla y rápida de montarse un env local
VAGRANT
Nos permite construir nuestras máquinas virtuales de
una forma rápida y automática
DOCKER
Conteneriza tu aplicación para que sea portable
Cada tecnología debería estar en 1 contenedor
Entorno
10. 10
@osrecio 30/06/2017
Herramientas
Terminal
La principal herramienta de cualquier desarrollador. No le tengáis miedo, no muerde y
seguramente te ahorre mucho tiempo.
1
IDE ~ PHPStorm
Principalmente donde vamos a pasar el rato implementando nuestros módulo, temas,
etc. Es dónde ocurre la magia.
2
DBMS
Nuestro gestor de bases de datos. Si le prestamos atención podemos salvar segundos y
deadlocks de nuestro día a día.
3
Browser
Dónde la gente común ve cosas y compra sin saber el iceberg que hay por debajo.4
Photoshop / Gimp / Pixelmator
Tower / Sourcetree / GitKraken
Postman / Boomerang / Soap UI
Nyancat / Cmatrix / Hacker Typer
Sublime / Atom / Vim
git / tig / ssg / htop / ncdu
Entorno
12. 12
@osrecio 30/06/2017
Creación de Componente
Módulos / Lenguajes / Temas / Librerías
Componente Magento 2
Semver
KeepChangeLog
Composer
1
2
4
Versionado semántico de nuestros módulos.
MAJOR versión: al realizar cambios de API incompatibles.
MINOR versión: cuando se agrega funcionalidad de una manera compatible con versiones anteriores.
PATCH versión: es cuando haces correcciones de errores compatibles con versiones anteriores.
Es el archivo que contiene una lista ordenada cronológicamente de cambios notables
para cada versión de un componente.
Es el fichero que definirá sus dependencias con otros componentes a la hora de
instalarse, además de informar de incompatibilidades con diferentes versiones etc.
3
MAJOR.MINOR.PATCH
README
Tu archivo README es normalmente el primer punto de entrada a tu código. Debe describir para que
se debe usar tu componente, cómo pueden instalarlo y cómo pueden usarlo.
Desarrollo
13. 13
@osrecio 30/06/2017
Creación de módulo
Estructura básica
Desarrollo
Presentation Logic
Request handling
Configuration
Translations
Tests
Rendering
Register to App
Business Logic
14. 14
@osrecio 30/06/2017
Optimiza tu tiempo
magento2-phpstorm-templates
phpstorm-live-templates-magento-2
LiveTemplates
pestle
Mage2gen
magento2-code-generator
Code Generation
n98-magerun2
n98-magerun
22%
41%
10%
25%
Este plugin ha salvado a más de un
desarrollador
Magicento
Desarrollo
Saber más
phpstorm directory types
Directory Types PHPStorm
2%
15. 15
@osrecio 30/06/2017
Calidad de código
Mientras esculpes código te
irá informando de tus errores
PHPCS - PHPCBF / PHPMD
Siempre hay que pasar los test
Test
No se hace push si hay errores
GrumPHP
Una vez hemos pasado los
anteriores steps, estamos
listos para pushear
Push
Automated Code Review
Codacy / CodeClimate
Desarrollo
16. 16
@osrecio 30/06/2017
Desarrollo
$ composer global require phpmd/phpmd
$ composer config -g repositories.magento composer https://repo.magento.com
$ composer global require magento-ecg/coding-standard
$ composer global require magento/marketplace-eqp
$ export PATH="$PATH:$HOME/.composer/vendor/bin" #Add to .zshrc .bashrc etc
$ phpcs --config-set installed_paths $HOME/.composer/vendor/magento-ecg/coding-standard/,$HOME/.composer/vendor/magento/marketplace-eqp/
$ phpcs -i
The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend, Ecg, EcgM2, MEQP1 and MEQP2
PHPStorm
phpcs
Preferences > Languages & Frameworks > PHP > Code Sniffer : ~/.composer/vendor/bin/phpcs
Preferences > Editor > Inspections > PHP > PHP Code Sniffer validation: select standard from list
phpmd
Preferences > Languages & Frameworks > PHP > Mess Detector : ~/.composer/vendor/bin/phpmd
Preferences > Editor > Inspections > PHP > PHP Code Mess Detector validation: {magento_root}/dev/tests/static/testsuite/Magento/Test/Php/_files/phpmd/ruleset.xml
Configurar PHPCS / PHPMD
Calidad de código
17. 17
@osrecio 30/06/2017
Desarrollo
Tests
Calidad de código
./vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist
Lanzar todos los tests
./vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist
app/code/Example/Module/Test/Unit
Lanzar los tests de un módulo
DevDocs Magento
Configurar PHPStorm
magento dev:tests:run <test> <<all, unit,
integration, integration-all, static, static-all,
integrity, legacy, default>>
Lanzar tests desde Magento CLI
22. 22
@osrecio 30/06/2017
Trabajar con ComposerDesarrollo
Crear componente aséptico
Crear subcarpeta
Create Subfolder with unique
name
Require component
Add `require` in project
`composer.json`
Crear carpeta
Create Folder in root project
named `i4modules`
Añadir structura componente
Add module structure, `README.md`,
`CHANGELOG.md`, `composer.json` and
`src` (inside this folder will be the
module)
Repository path
Add repository type path
Begin to develop
Empieza con tu lógica de negocio
24. 24
@osrecio 30/06/2017
Trabajar con ComposerDesarrollo
“Paquetiza” un componente creado previamente
Componente
“Paquetizado”
Copiar componente
Añadir git
Crear tag y push
4
5
6
1
2
3
Crear carpeta
Crear Subcarpeta
Crear estructura comp.
Create Folder named
`i4modules`
Create Subfolder with unique
name
Create Subfolder `src`, add
`README.md`,
`CHANGELOG.md` and
`composer.json`
Copy Module from
`app/code/Interactiv4/{moduleN
ame}` to folder `src`
Init Git, Add Remote, Add files,
Commit Files
Create git tag with same version of
`composer.json`, Push your code to
repo with tag
Como resultado tenemos un repo
que podemos añadir a packagist o a
nuestro Satis
26. 26
@osrecio 30/06/2017
Deploy Tools
Opciones
Remote server automation and
deployment tool written in Ruby
Capistrano
Magento2 Deployment Setup using
Robo and Deployer
MageDeploy2
Deployment tool for PHP
Deployer
Deployment tool for Magento 2
created with PHing
Magento 2 Deploy Tool
Despliegue
27. 27
@osrecio 30/06/2017
CI / CD
Continous Integration / Continous Delivery
CodeShip
CodeFresh
Jenkins
GitLab CI / Bitbucket Pipelines *
Circle CI
Despliegue
29. 29
@osrecio 30/06/2017
Ejemplo
Despliegue en Producción
Run Build
Trigger Deploy from Jenkins
Run Tests
Run Integration, unit, static
tests
Build Assets
Change to production mode,
deploy:compile and
deploy:static:content
Deploy
Multistage deploy with
deployer
Create Artifacts
Create zip of project to being
deployed to prod env.Tool Setup
Install or update tools for
deploymentMagento Setup
Clone Repository
Update composer
Despliegue
31. 31
@osrecio 30/06/2017
Tips and Tricks
1
Utiliza hirak/prestissimo para paralelizar la descargas con
composer
2
Deshabilita el módulo: Magento_Version
3
Parchea Magento a través de composer. James Cowie te
explica cómo
4
Ten siempre en tus proyectos una Developer Toolbar, aquí te
dejo un par: DT1 y DBT2
5
Si no sabes dónde encontrar cosas de Magento aquí te dejo
un par de resources: Awesome Magento 2 y Mageres
6
Sino te acuerdas de todos los comandos del magento cli y
estás todo el día con el grep, usa este autocomplete
7
Lee todos los #MagentoMonday que hace Sherrie si quieres
estar al día. Están en los foros de Magento
8
Sígueme en Twitter
Consejos
32. 32
@osrecio 30/06/2017
Mis consejos
“Pasa algún tiempo investigando y
planificando tareas para dar una
estimación precisa”
Piensa y luego estima
“El mal no deja de estar equivocado
porque la mayoría participe en el”
El Core no es el Santo Grial
“No soy un excelente programador;
Soy un buen programador con
excelentes hábitos”
Testea todo lo que puedas
“Los pequeños detalles son vitales.
Las pequeñas cosas hacen que
sucedan grandes cosas”
Cada detalle importa
“La satisfacción radica en el
esfuerzo, no en el logro, el pleno
esfuerzo es la victoria completa”
Satisfacción
“La innovación distingue a un líder
de un seguidor”
Innova
Consejos