Recomendaciones para repositorios privados

  • Autor Autor Daraker
  • Fecha de inicio Fecha de inicio
Daraker

Daraker

Beta
Programador
Verificación en dos pasos activada
Verificado por Binance
Hola con todos, tengo algunas dudas respecto al tema de repositorios privados como composer, yarn, etc o control de versiones con Git y plataformas como Github o Gitlab.

- Primeramente ando desarrollando un sistema con varios módulos, como le haría para llevar un control de versión por módulos separados. Esto se debe por motivos de seguridad cuando se trabaja en equipo dar acceso solo al modulo que se necesite trabajar.
- Segundo ese sistema lo tengo separado tanto el Backend como el Frontend por módulos usando VUEJS y Laravel, en el caso de vue como llevaria también el control.

Estas preguntas son ya que tengo todo en un solo proyecto unido separado solo por carpetas.
También quisiera saber que plataformas me recomendarían para llevar estos controles, como nota adicional todo se pretende manejar de manera privada y nada público. En ese caso como se podría hacer.

Gracias de antemano :encouragement:
 
Para repositorios privados y gratuitos te recomiendo bitbucket, lo demás es organización.
 
Composer y yarn NO son repositiorios, son manejadores de paquetes (para PHP y Node respectivamente).

Repositorios son BitBucket, GitHub, GitLab entre otros. Opciones gratuitas hay dos populares (líderes) BitBucket y GitLab, GitHub tiene una cuota de $5 USD al mes si mal no recuerdo por repositorios privados. Personalmente me gusta GitLab ya que desde hace un año ha evolucionado rápidamente pasando de ser un repositorio self-hosted a una solución en la nube (alojada) que además integra varias herramientas de manera gratuita como: tablero de proyectos (KANBAN), issue tracker y herramientas de CI. BitBucket también las tiene pero en mi experiencia y necesidades no están muy bien diseñadas o integradas (Attlasian mantiene todo separado, y a excepción de Trello que recientemente fué adquirido por ellos, sus herramientas son de pago).

La respuesta a la primera pregunta tiene que ver con la arquitectura de tu aplicación, TU debes saber como se puede versionar puesto que tu eres quien la está diseñando/desarrollando. Normalmente, salvo que sea para "vender" u ofrecer por separado, se tenga pensado re-utilizar en otra aplicación, o que se trate de módulos muy grandes e independientes, no se suelen separar en versionamiento puesto que tu versionas la aplicación como tal. Por ejemplo, si haces un CRM/ERP a medida (que es lo más común), tu aplicación web por el simple hecho de usar Laravel ya te permite organizar tus "módulos" o partes de la aplicación, solo es cuestión de saberla diseñar (arquitectonicamente hablando) pero TODA la app se controla como UN solo repositorio. Es medio "fuera de común" separarla si no tienes la necesidad, si la tienes, cual es el fin?

Lo mismo en los componentes de Vue, si realmente necesitas separarlos (pero justifícalo) crea paquetes de Node (con npm o yarn) privados que alojes en tu proveedor de repositorios, sin embargo hablar de componentes re-usables de Vue es una tarea que requiere experiencia (para hacerlo BIEN) y supongo yo que apenas vas empezando por el tipo de preguntas que haces (sin ofender), en cuyo caso nuevamente si no tienes necesidad NO quieras crear un repositorio por componente o módulo, no es una técnica convensional salvo que como dije haya una justificación real detrás (re-usabilidad en muchos proyectos, modulo/componente tan grande que es más fácil mantenerlo fuera o planeas venderlo/distribuirlo de alguna forma).

Cualquier duda hazme saber, soy muy experimentado en todo el ámbito de la programación/devops y Laravel/Vue son mis frameworks principales en los últimos años.
 
Composer y yarn NO son repositiorios, son manejadores de paquetes (para PHP y Node respectivamente).

Repositorios son BitBucket, GitHub, GitLab entre otros. Opciones gratuitas hay dos populares (líderes) BitBucket y GitLab, GitHub tiene una cuota de $5 USD al mes si mal no recuerdo por repositorios privados. Personalmente me gusta GitLab ya que desde hace un año ha evolucionado rápidamente pasando de ser un repositorio self-hosted a una solución en la nube (alojada) que además integra varias herramientas de manera gratuita como: tablero de proyectos (KANBAN), issue tracker y herramientas de CI. BitBucket también las tiene pero en mi experiencia y necesidades no están muy bien diseñadas o integradas (Attlasian mantiene todo separado, y a excepción de Trello que recientemente fué adquirido por ellos, sus herramientas son de pago).

La respuesta a la primera pregunta tiene que ver con la arquitectura de tu aplicación, TU debes saber como se puede versionar puesto que tu eres quien la está diseñando/desarrollando. Normalmente, salvo que sea para "vender" u ofrecer por separado, se tenga pensado re-utilizar en otra aplicación, o que se trate de módulos muy grandes e independientes, no se suelen separar en versionamiento puesto que tu versionas la aplicación como tal. Por ejemplo, si haces un CRM/ERP a medida (que es lo más común), tu aplicación web por el simple hecho de usar Laravel ya te permite organizar tus "módulos" o partes de la aplicación, solo es cuestión de saberla diseñar (arquitectonicamente hablando) pero TODA la app se controla como UN solo repositorio. Es medio "fuera de común" separarla si no tienes la necesidad, si la tienes, cual es el fin?

Lo mismo en los componentes de Vue, si realmente necesitas separarlos (pero justifícalo) crea paquetes de Node (con npm o yarn) privados que alojes en tu proveedor de repositorios, sin embargo hablar de componentes re-usables de Vue es una tarea que requiere experiencia (para hacerlo BIEN) y supongo yo que apenas vas empezando por el tipo de preguntas que haces (sin ofender), en cuyo caso nuevamente si no tienes necesidad NO quieras crear un repositorio por componente o módulo, no es una técnica convensional salvo que como dije haya una justificación real detrás (re-usabilidad en muchos proyectos, modulo/componente tan grande que es más fácil mantenerlo fuera o planeas venderlo/distribuirlo de alguna forma).

Cualquier duda hazme saber, soy muy experimentado en todo el ámbito de la programación/devops y Laravel/Vue son mis frameworks principales en los últimos años.

Ya tengo armada la estructura en laravel y vue en un solo proyecto con lo que es caffeinated modules. La problemática surgió por que tocara trabajar con varias personas y solo quieren que X persona pueda bajar X modulo para trabajar sobre este y no que baje toda la aplicación como tal. 😕

Y no estoy empezando, ya tenia un 25% del proyecto desarrollado así, cuando me salen con este requerimiento D:

En si solo quería saber la mejor forma de hacerlo.
 
Github... Sus planes son económicos y en si es el mejor.
Podrias usar Bit o Lap pero realmente, son basuras...
 
Bitbucket es la mejor opción
 
Github... Sus planes son económicos y en si es el mejor.
Podrias usar Bit o Lap pero realmente, son basuras...
Porque "son basuras"? Más bien no supiste usarlos. Creo que es cuestión de gustos y que tan fácil resulte la UI para tus necesidades, pero con los 3 puedes hacer creo que exactamente las mismas (o casi todas) cosas.
 
Porque "son basuras"? Más bien no supiste usarlos. Creo que es cuestión de gustos y que tan fácil resulte la UI para tus necesidades, pero con los 3 puedes hacer creo que exactamente las mismas (o casi todas) cosas.

No es mi opinión personal, es la opinión de la mayoría.
Segundo yo uso maquinas virtuales + servidores propios para control de archivos y Git + Github para control de versiones uso todo por consola, asi que tampoco sirve el argumento de "es muy complicado su interfaces a diferencia de github o alguna cosa por el estilo)

Github ofrece integraciones, revisiones, interpretaciones, rutas de cambios, rutas de bnsl entre muchas mas cosas que otras plataformas no ofrecen.
 
No es mi opinión personal, es la opinión de la mayoría.
Segundo yo uso maquinas virtuales + servidores propios para control de archivos y Git + Github para control de versiones uso todo por consola, asi que tampoco sirve el argumento de "es muy complicado su interfaces a diferencia de github o alguna cosa por el estilo)

Github ofrece integraciones, revisiones, interpretaciones, rutas de cambios, rutas de bnsl entre muchas mas cosas que otras plataformas no ofrecen.
No puedo decir que es la opinión de la mayoría como tu afirmas porque honestamente no conozco a toda esa gente, pero algo si te puedo decir: de TODAS las comunidades en las que me veo envuelto (que principalmente son comunidades tanto pequeñas como grandes) de PHP, JS, UX, DevOps, etc, en ninguna he leído que llamen basura a BB ni GL; yo lo que leo son opiniones encontradas de porque uno u otro, pero nunca un disgusto.odio tan grande como el que has hecho notar en tu comentario. Pero bueno, supongo que estás en más comunidades que yo y por eso lo puedes afirmar.

Respecto al segundo punto es irrelevante, ya quien no use VMs o Contenedores para emular ambientes de trabajo creo que no debe llamarse programador en estos tiempos (a menos que tengas recursos $$$ para montar servidores reales para pruebas locales jeje). Aquí es curioso el "servidores propios para control de archivos y git, y github para control de versiones uso todo por consola...." y me surgen dos preguntas:

1- Control de archivos y git en un servidor propio? Entonces para que usas GitHub? Cuando leí control de archivos pensé en Spaces, o S3 de Amazon, pero luego le agregaste git y no le encontré sentido (tanto GitHub, como Gitlab, como BB soportan alojamiento de archivos grandes, especialmente si estás en un plan de pago).
2- Github lo usas en consola y el argumento de la UI es irrelevante.... interesante que lo digas porque como configuras Webhooks o todas esas integraciones que mencionas? Eso es a través de la UI; yo no hablo de commits, difs, rebases, logs, etc. sino lo que puedes hacer con CI/CD, y las integraciones que comentas (que al final los 3 servicios las tienen, más o menos complicadas pero igual las tienen). Si sabes que GIT y GITHUB son cosas separadas verdad? (lo que tu haces en la consola se llama usar el cliente de GIT, para mover tu codigo a GITHUB que es un servicio de control de versiones el cual... bueno no se puede manejar en consola navitamente XD)

En mi muy humilde opinión (y habiendo expuesto lo anterior) creo que eres de esos que defienden a capa y espada sus herramientas sin importar que, ya que los argumentos que has expuesto no los considero sólidos (y te lo demostré al cuestionarte sobre ellos). Pero bueno, de eso no va el tema y no te preocupes que todos aprendemos y nos equivocamos (yo lo he hecho mucho tiempo), en fin yo invito a todos los programadores a no dejarse llevar por comentarios "el resto son basura" y hacer un juicio personal al evaluar las herramientas, yo honestamente me encuentro muy conforme con GitLab después de MUCHOS años de usar BB. Podría moverme a GitHub y sentirme igual de conforme, pero para que pagar por algo que ya me ofrecen gratis en otro lado? Ya es cuestión de gustos como dije.

Disclaimer: y si uso GitHub en a actualidad, pero solo para proyectos open source.
 
Última edición:
A la final llegue a una solución, en sí la idea principal de todo esto era en que manera se podría controlar el flujo de descarga de código en lo que respecta al control de versiones, lo que procedí a hacer fue instalar Gitea en un servidor privado y con ello nadie que no estuviera en la red empresarial podría descargar código.
Espero les sea de utilidad. :encouragement:
 
Atrás
Arriba