Implementación de Git en entornos laborales

  • Autor Autor Marky
  • Fecha de inicio Fecha de inicio
M

Marky

Beta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola, que tal?

Quería saber si utilizan Git en sus empleos porque tengo una duda de como implementar git con git-flow en la empresa donde trabajo.

En la empresa tenemos un servidor de producción, uno distinto para tests y cada pc local tienen su ambiente de desarrollo, entonces como implementaría git-flow?
En el servidor de producción crearia el repositorio con git-flow y cada pc local hace un clon de ese repositorio y a su vez, tambien haria un clone desde el servidor de test, o como haria??

Necesito un poquito de orientación por favor.
Muchas gracias 😀
 
Hola.

Gitflow es una marco de trabajo y lo más probable es que tus compañeros y tú deban adaptarse e incluso cambiar el flujo actual.

El servidor de producción debe usar la rama principal, y esta debe ser master.
Ten en cuenta, que Gitflow también sugiere el uso de la rama releases), y ahí especificas las versiones: 1.0, 1.2 y así, pero producción siempre debe usar master. (Al menos eso pienso yo) :encouragement:

Por otro lado, siempre debe haber un lider técnico o responsable del repositorio, y es él quien deba encargarse del proceso de fusión de ramas (merge). Ahora, ¿Tienes gente de QA/testers? Porque si es así, lo mejor sería hacer un "code freeze" (1) en una rama llamada "tests" o "qa" (la cual el servidor de pruebas apunte a esa rama, y sólo se deba hacer git pull).

Otra forma, y un poco compleja sería automatizar cada pull request. Por ejemplo:
* Tenemos como característica a desarrollar: "implementar un nuevo sistema de mensajes privados".
* El desarrollador debe trabajar en su rama local que se basa en develop.
* Una vez implementado, el desarrollador debe enviarlo a repositorio como develop/mensaje-privado
* Luego, crear un pull request solicitando hacer merge en la rama develop.
* Internamente Github o Bitbucket realizan el proceso de despliegue en tú servidor de pruebas [investiga sobre: webhooks]
* El QA es notificado, y debe hacer la comprobaciones a partir del caso de uso.
* Si todo anda bien, se fusiona a develop.

Sé que es un proceso engorroso, pero es una buena práctica, e incluso se puede automatizar mucho más con un CI (Continuous Integration - Integración continua) y con pruebas unitarias, pero ya eso es otra historia.

Espero te sirva, o al menos te de una idea de como usar Gitflow, y en resumen el flujo de trabajo en Gitflow es:

La rama develop es creada desde master
La rama release es creado desde develop
Las ramas feature (características) son creadas de la rama develop

Cuando una nueva característica es completada se hace una fusión (merge) en la rama desarrollo (por lo general vía pull request)

Cuando la rama release está lista, la rama se fusiona en las ramas develop y master.

Si un error/issue es detectado en master, se crea una rama llamada hotfix creado a partir de master.
Cuando el hotfix está terminado, este es fucionado en las ramas develop y master respectivamente.

(1) Un "code freeze" es un período de tiempo en donde los cambios al código son prohibidos y/o restringidos.
 
Yo en mi curro también utilizo git y hago mas o menos lo que ha dicho iamcholo
Tengo en la rama master el programa que esta en producción
Después tengo en la rama develop el programa que esta en testeo
Y en local utilizo features desde la rama develop que cuando termino las uno a develop para testerla en local y seguidamente la subo al entorno de test
Después de ahí si todo esta bien la uno a master y ya se ha completado el ciclo
En caso que haya un error en producción se abre hotfix se arregla y se finaliza, al finalizarse se une automáticamente a las dos ramas (master y develop)
 
Gracias [MENTION=125588]Francas[/MENTION] y [MENTION=150432]iamcholo[/MENTION]. Si la idea es empezar a implementar git con gitflow, junto con integración continua y TDD.
Pero mi pregunta esta mas apuntada al nivel técnico de como implementar el repositorio gitflow en la arquitectura de servidores que tenemos hoy en día.
Deberíamos crear el repositorio gitflow en el servidor de test o en el de producción? y como apuntamos cada rama a cada servidor?
 
Yo en mi curro tengo instalados los repositorios en un solo servidor lo único que un repositorio apunta a la rama master que es el que esta en producción y el otro en la rama develop que es el de testeo
Entonces cuando subo algo hago el un git pull en el repositorio correspondiente
 
Yo en mi curro tengo instalados los repositorios en un solo servidor lo único que un repositorio apunta a la rama master que es el que esta en producción y el otro en la rama develop que es el de testeo
Entonces cuando subo algo hago el un git pull en el repositorio correspondiente

[MENTION=125588]Francas[/MENTION] tendrias un ejemplo de los comandos que realizas para crear los repositorios en cada ambiente y apuntarlos a test y produccion?

Gracias.
 
Te pongo un ejemplo de como lo hago yo
Insertar CODE, HTML o PHP:
git clone -b RAMA git@bitbucket.org:USUARIO-BITBUCKET/NOMBRE-REPOSITORIO.git NOMBRE-CARPETA
La rama sera develop o master
La url "git@bitbucket.org:USUARIO-BITBUCKET/NOMBRE-REPOSITORIO.git" la puedes sacar de bitbucket directamente pero sino es mas o menos como te la he descrito
Y el nombre de la carpeta pues eso el nombre de la carpeta donde estará tu proyecto
 
Atrás
Arriba