Distribuyendo extensiones en Magento2

Como ya sabemos, la mejor manera de instalar una extensión en Magento2 es mediante composer. El objetivo no es mostrate cómo instalar ni usar composer, ya que hay muchos howtos que van desde cómo instalar (acá tenes la documentacion oficial de Magento) a cómo usarlo.

Doy por supuesto también que ya sabés hacer una extensión, y que ya sabés definir el composer.json que es donde van a ir tus datos para que tu extensión pueda ser instalada vía composer.

Tenemos que diferenciar entre extensiones gratis y extensiones pagas, ya que se manejan completamente distinto.

En esta entrega, voy a explicar cómo distribuir tus extensiones gratis con composer.

 

Extensiones gratis

Estas son las fáciles, ya que si tenemos nuestra extensión en un repositorio publico de GitHub la tarea es muy sencilla.

Lo primero es tener una cuenta en https://packagist.org (son 3 minutos crearte una y es gratis).

Una vez tenés tu cuenta, para crear tu package, tenés que clickear en submit (arriba a la derecha).

En ese punto, solo tenés que poner la url de tu repositorio de GitHub y clickear en check.

Después de unos instantes, te va a pedir confirmación para crear el package. Lo confirmás clickeando en submit.

Si vas siguiendo todo paso a paso, deberías ver algo así.

Hasta acá todo bien, pero no tengo ninguna versión. Para eso, tenemos que ir a GitHub y crear un release. Así que creo un nuevo release.

Para que el Packagist te tome ese nuevo release, tenés que dar en el botón de update. De esa manera, aunque resulte un poco incomodo, cada vez que hacemos un release, vamos a Packagist y hacemos click en update.

Nos tenemos que acordar siempre que vamos a hacer un nuevo release de cambiar el composer.json y el etc/module.xml.

Es un poco incómodo tener que ir caaaaaada vez que hacemos un release a Packagist y dar en el botón de update, eso lo podemos hacer automaticamente.

 

Automatizando los releases

Primer paso: vamos a GitHub a nuestro repo y elegimos settings (el de nuestro repo).

Ahí vamos a elegir Integrations & Services y dentro de esos, vamos a elegir Packagist.

En este punto vas a necesitar la API token de Packagist, esto lo sacas de a tu perfil en Packagist y clickeando en “show api token”.

Una vez la tengas, podes volver a GitHub y terminar el proceso, ingresas tu usuario de Packagist, tu API token y marcas el checkbox de active (que ya esta marcado por defecto).

Y listo, si todo anduvo correctamente, cuando hagas un nuevo release, se va a publicar automáticamente en Packagist, no tenés que hacer nada (mas que esperar capaz que algunos minutos, no seas impaciente).

Ahora, ya podes instalar tu extensión con Composer.

composer require gonzalezuy/article2

Y vos te preguntaras, ¿por qué gonzalezuy y no gonzalouy? Por que ese nombre depende del nombre que haya puesto en el composer.json y no de mi usuario real de packagist (eso también lo podes ver cuando vas a packagist/my packages).

Espero que la explicación te resulte clara y que haya sido de ayuda para simplificarte la vida. Si tenés alguna duda, siempre podes comentar o preguntar por twitter que voy a tratar de aclararlo.

En la próxima, vamos a ver como distribuir tus extensiones pagas, que es mucho mas complicado.