Gestión: usar un mismo framework/libreria/componente en varios proyectos

B

Tengo dudas sobre como hacer esto bien.

Estoy en la siguiente situación:
tengo 10 apps que usan un mismo componente creado por mi
quiero actualizar ese componente y que aplicar el cambio en esas 10 apps haciendo lo minimo posible

quien dice componente dice clase o lo que sea, imaginad que tengo 10 apis que hacen el login de la misma manera pero cambiando algunos parametros, ahora quiero meter una linea de log en ese proceso de login, como hago?

ahora lo estoy haciendo mas o menos manual, tengo algunas librerias y cuando las actualizo tengo que ir a los 10 proyectos a bajarse lo nuevo

por poner otro ejemplo, los grupos de webs como asco de vida o xataka, donde tienen un modelo de app y lo trabajan en diferentes webs, si meten un cambio por ejemplo del banner de las cookies como hacen?

no hay alternativa a ir a cada proyecto que lo use y bajarse la nueva versión?

se me ocurren cosas como añadir un proceso al pipeline de los proyectos para que cuando se actualice X libreria se genere todo el proyecto pero no me termina de convencer

JuAn4k4

Imagino que estarás publicando una librería y es la versión de la librería la que subes, y no copy&pasteas el código.

Si te refieres a un bot que suba automáticamente las versiones de tus packages, debería ser algo en tu CI que suba los patch updates y/o minnor version updates y le meta un commit a tus repos (solo aconsejable para TUS libs),que luego llega el típico parch update de una librería que rompe todo Internet.

1
djamb

Yo te voy a hablar de lo que conozco, en android tienes servidores como sonatype, bintray, jitpack, etc donde puedes subir la librería en .aar o .jar con su versión correspondiente, esto se puede automatizar en gradle etc..
Total, después de que se suba lo único que queda es actualizar la versión en los 10 proyectos.

1
frekaice

La solución es crear una librería y tenerla versionada. Luego en cada proyecto defines la versión que quieras usar.

Dependiendo del gestor de paquetes tendrás unas opciones u otras para hacer una actualización automática de tus patch/minor/major

1
B

Para que os hagais una idea concreta, tengo 5 blogs para sacarme unas perras y todos usan un componente Seo que añade unas etiquetas a la web.
En ese componente pongo el tag del titulo y quiero cambiar para que en vez de "Contacto" ahora sea "Contacto | Miweb.com"

Lo que quiero es actualizar esa libreria y que mis 5 proyectos que la usan se actualicen.

En mi caso es javascript así que puedo ponerle al npm que instale siempre la ultima versión.

Un proceso intermedio sería volver a hacer build y desplegar cada proyecto, manualmente, cada vez que actualice la libreria. Así se instalaría la ultima versión y quedaría todo igual.

El siguiente paso sería montar algo que lance esos despliegues cada vez que se actualiza la librería.

Tengo que pensar bien lo de los errores pero en principio confio en que si me cargo algo rompan los tests de cada proyecto y no se publique

ReloaD1010

Necesitas tenerlo dentro de algun bundle para esos blogs?
SI - pues crea una repo en github por ejemplo, lo pones como dependencia en el resto de proyectos y apañas la CI para que cada proyecto que lo consuma instale la ultima version.
NO - creas tambien una repo en github p.ej y en la CI puedes hacer deploy a un S3 bucket en AWS para tener la ultima version siempre disponible en la misma URL. De esta forma no haria falta mas que invalidar el cache del js para que todas las paginas usasen la ultima version

1

Usuarios habituales