ramas con git: aplicación a un proyecto en producción
DESCRIPTION
Charla en la que cuento cómo estamos utilizando la potencia de las ramas de Git para el desarrollo de una aplicación que ya está en producción. Dicha aplicación se está desarrollando con metodologías ágiles y cada semana se sube nueva funcionalidad a producción. Es necesario compaginar los desarrollos de nuevas funcionalidades con la corrección de bugs y con una política estricta de ramas con Git podemos hacerlo :-) Código fuente de las slides (creadas con reveal.js) disponible en: https://github.com/lmivan/slides-ramas-gitTRANSCRIPT
RAMAS CON GITAPLICACIÓN A UN PROYECTO EN PRODUCCIÓN
Iván López @ilopmarhttp://kaleidos.net/4B0082
PROBLEMA A RESOLVERCompatibilizar desarrollos de nueva funcionalidad conversiones estables en producción y corrección de bugs
¿CÓMO LO HACEMOS?Definiendo una forma estandar de trabajar. Basado en
Usando las ventajas de GIT
Política de BRANCHES
Versionado
Control estricto de los pasos a producción
http://nvie.com/posts/a-successful-git-branching-model/
VERSIONADOEstandar X.YY.ZZX -> Mayor versión
YY -> Minor versión
ZZ -> Patch
PASOS A PRODUCCIÓN
TIPOS DE RAMASInfinitas: develop, masterTemporales: features, releases, hotfix
INFINITAS
DEVELOPRama de desarrollo
Cualquier funcionalidad nueva parte de esta rama y semergea de nuevo aquí
Jenkins configurado para ejecutarse contra ella
MASTERRama de producción
Nunca se commitea en ella
Jenkins configurado para ejecutarse contra ella, aunquenunca debería fallar ;-)
FRONTENDAl principio del proyecto se maquetaba en ella
Deprecada
TEMPORALES
FEATUREPara desarrollar nuevas User Stories
Se crea a partir de develop y se mergea de nuevo a develop
DEMO
RELEASECongelación y estabilización de versión candidata a subir aproducción
Se debe aumentar la versión (minor) y crear tagSe crea a partir de develop y se mergea de nuevo a master ydevelopCualquier bug que haya que corregir para estabilizar laversión se commiteará directamente contra esta rama
Está prohibido mergear cambios contra esta rama ytampoco añadir nueva funcionalidad
DEMO
HOTFIXCorrección de bugs de producción que no pueden esperar alciclo de subidas normales
Se debe aumentar la versión (patch) y crear tagSe crea a partir de master y se mergea de nuevo a master ydevelop
DEMO
PROBLEMASFuncionalidad no-plugable ni ordenable
Árbol de commits "sucio" por los merges de develop a lasramas de features
No hacemos rebase (aunque en su momento lo hicimos) y lovolveremos a hacer
GRACIASIVÁN LÓPEZ@ILOPMAR