33
@osrecio @osrecio 30/06/2017 De 0 a 100 con Magento 2

De 0 a 100 con Magento 2

Embed Size (px)

Citation preview

Page 1: De 0 a 100 con Magento 2

@osrecio@osrecio 30/06/2017

De 0 a 100 con Magento 2

Page 2: De 0 a 100 con Magento 2

2

@osrecio 30/06/2017

Óscar RecioLead Magento Developer

Mi previsión de #eCommerce para 2017 es: "El humo se disipa"

@osrecio

osrecio

osrecio

osrecio.com

Page 3: De 0 a 100 con Magento 2

@osrecio 30/06/2017

Interactiv4

Page 4: De 0 a 100 con Magento 2

4

@osrecio 30/06/2017

Entorno Desarrollo Despliegue Consejos

¿ Qué vamos a ver ?

Page 5: De 0 a 100 con Magento 2

5

@osrecio 30/06/2017

Entorno

Page 6: De 0 a 100 con Magento 2

6

@osrecio 30/06/2017

Sistema Operativo

Linux Mac Win

Entorno

Page 7: De 0 a 100 con Magento 2

7

@osrecio 30/06/2017

Sistema Operativo

Linux Mac Win

Entorno

Page 8: De 0 a 100 con Magento 2

8

@osrecio 30/06/2017

Setup

PHPPHP-FPM

ApacheNginx

MysqlPerconaMariaDb

Magento CEMagento EE

PHP HTTP Mysql Magento

Entorno

Page 9: De 0 a 100 con Magento 2

9

@osrecio 30/06/2017

Setup

LAMP || MAMPLinux/MacOS Apache + Mysql + PHP,

Es la opción más conocida popularmente

LEMP || MEMPLinux/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

VAGRANTNos permite construir nuestras máquinas virtuales de una forma rápida y automática

DOCKERConteneriza tu aplicación para que sea portableCada tecnología debería estar en 1 contenedor

Entorno

Page 10: De 0 a 100 con Magento 2

10

@osrecio 30/06/2017

Herramientas

TerminalLa 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

DBMSNuestro gestor de bases de datos. Si le prestamos atención podemos salvar segundos y deadlocks de nuestro día a día.

3

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

Page 11: De 0 a 100 con Magento 2

11

@osrecio 30/06/2017

Desarrollo

Page 12: De 0 a 100 con Magento 2

12

@osrecio 30/06/2017

Creación de ComponenteMó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

READMETu 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

Page 13: De 0 a 100 con Magento 2

13

@osrecio 30/06/2017

Creación de móduloEstructura básica

Desarrollo

Presentation Logic

Request handling

Configuration

Translations

Tests

Rendering

Register to App

Business Logic

Page 15: De 0 a 100 con Magento 2

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 testTest

No se hace push si hay erroresGrumPHP

Una vez hemos pasado los anteriores steps, estamos

listos para pushear

Push

Automated Code ReviewCodacy / CodeClimate

Desarrollo

Page 16: De 0 a 100 con Magento 2

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

PHPStormphpcsPreferences > Languages & Frameworks > PHP > Code Sniffer : ~/.composer/vendor/bin/phpcsPreferences > Editor > Inspections > PHP > PHP Code Sniffer validation: select standard from list phpmdPreferences > Languages & Frameworks > PHP > Mess Detector : ~/.composer/vendor/bin/phpmdPreferences > 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

Page 17: De 0 a 100 con Magento 2

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

Page 18: De 0 a 100 con Magento 2

18

@osrecio 30/06/2017

Trabajar con ComposerDesarrollo

Dependency Manager for PHP

Page 19: De 0 a 100 con Magento 2

19

@osrecio 30/06/2017

Composer¿ Cómo funciona ?

Resolve dependencies

Generatecomposer.lock

Downloadpackages

composer.json

Desarrollo

Page 20: De 0 a 100 con Magento 2

20

@osrecio 30/06/2017

Composer¿ Cómo funciona ?

SatisRepo

Resolve dependencies

Generatecomposer.lock

Downloadpackages

composer.json

Desarrollo

Page 21: De 0 a 100 con Magento 2

21

@osrecio 30/06/2017

Desarrollo

$ composer create-project composer/satis --stability=dev --keep-vcs

$ echo ‘{

"name": "Satis Repository",

"homepage": "http://repo.osrecio.com",

"repositories": [

{ "type": "vcs", "url": "https://github.com/osrecio/privaterepo" },

{ "type": "vcs", "url": "http://bitbuclet.org/private/repo" },

{ "type": "composer", "url": "https://repo.magento.com" }

],

"require-all": true

}

‘ > packages.conf

$ php ./satis/bin/satis build ./packages.conf ./packages-mirror

$ php -S localhost:8888 -t ./packages-mirror/

Trabajar con ComposerSatis

Saber más

Page 22: De 0 a 100 con Magento 2

22

@osrecio 30/06/2017

Trabajar con ComposerDesarrollo

Crear componente aséptico

Crear subcarpetaCreate Subfolder with unique

name

Require componentAdd `require` in project

`composer.json`

Crear carpeta Create Folder in root project

named `i4modules`

Añadir structura componenteAdd module structure, `README.md`,

`CHANGELOG.md`, `composer.json` and `src` (inside this folder will be the

module)

Repository pathAdd repository type path

Begin to developEmpieza con tu lógica de negocio

Page 23: De 0 a 100 con Magento 2

23

@osrecio 30/06/2017

Trabajar con ComposerDesarrollo

Crear componente aséptico EJEMPLO

Page 24: De 0 a 100 con Magento 2

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/{moduleName}` 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

Page 25: De 0 a 100 con Magento 2

25

@osrecio 30/06/2017

Despliegue

Page 26: De 0 a 100 con Magento 2

26

@osrecio 30/06/2017

Deploy ToolsOpciones

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

Page 27: De 0 a 100 con Magento 2

27

@osrecio 30/06/2017

CI / CDContinous Integration / Continous Delivery

CodeShip

CodeFresh

Jenkins

GitLab CI / Bitbucket Pipelines *

Circle CI

Despliegue

Page 28: De 0 a 100 con Magento 2

28

@osrecio 30/06/2017

EjemploDespliegue en Producción

Despliegue

Page 29: De 0 a 100 con Magento 2

29

@osrecio 30/06/2017

EjemploDespliegue en Producción

Run BuildTrigger Deploy from Jenkins

Run TestsRun Integration, unit, static

tests

Build AssetsChange to production mode,

deploy:compile and deploy:static:content

DeployMultistage deploy with

deployer

Create ArtifactsCreate zip of project to being

deployed to prod env.Tool SetupInstall or update tools for

deploymentMagento SetupClone RepositoryUpdate composer

Despliegue

Page 30: De 0 a 100 con Magento 2

30

@osrecio 30/06/2017

Consejos

Page 31: De 0 a 100 con Magento 2

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

Page 32: De 0 a 100 con Magento 2

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

Page 33: De 0 a 100 con Magento 2

@osrecio 30/06/2017

¿ Preguntas ?

Gracias

@osrecio