ramas con git: aplicación a un proyecto en producción

21
RAMAS CON GIT APLICACIÓN A UN PROYECTO EN PRODUCCIÓN Iván López @ilopmar http://kaleidos.net/4B0082

Upload: ivan-lopez

Post on 26-May-2015

486 views

Category:

Technology


3 download

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-git

TRANSCRIPT

Page 1: Ramas con git: Aplicación a un proyecto en producción

RAMAS CON GITAPLICACIÓN A UN PROYECTO EN PRODUCCIÓN

Iván López @ilopmarhttp://kaleidos.net/4B0082

Page 2: Ramas con git: Aplicación a un proyecto en producción

PROBLEMA A RESOLVERCompatibilizar desarrollos de nueva funcionalidad conversiones estables en producción y corrección de bugs

Page 3: Ramas con git: Aplicación a un proyecto en producción

¿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/

Page 4: Ramas con git: Aplicación a un proyecto en producción

VERSIONADOEstandar X.YY.ZZX -> Mayor versión

YY -> Minor versión

ZZ -> Patch

Page 5: Ramas con git: Aplicación a un proyecto en producción

PASOS A PRODUCCIÓN

Page 6: Ramas con git: Aplicación a un proyecto en producción
Page 7: Ramas con git: Aplicación a un proyecto en producción

TIPOS DE RAMASInfinitas: develop, masterTemporales: features, releases, hotfix

Page 8: Ramas con git: Aplicación a un proyecto en producción

INFINITAS

Page 9: Ramas con git: Aplicación a un proyecto en producción

DEVELOPRama de desarrollo

Cualquier funcionalidad nueva parte de esta rama y semergea de nuevo aquí

Jenkins configurado para ejecutarse contra ella

Page 10: Ramas con git: Aplicación a un proyecto en producción

MASTERRama de producción

Nunca se commitea en ella

Jenkins configurado para ejecutarse contra ella, aunquenunca debería fallar ;-)

Page 11: Ramas con git: Aplicación a un proyecto en producción

FRONTENDAl principio del proyecto se maquetaba en ella

Deprecada

Page 12: Ramas con git: Aplicación a un proyecto en producción

TEMPORALES

Page 13: Ramas con git: Aplicación a un proyecto en producción

FEATUREPara desarrollar nuevas User Stories

Se crea a partir de develop y se mergea de nuevo a develop

Page 14: Ramas con git: Aplicación a un proyecto en producción

DEMO

Page 15: Ramas con git: Aplicación a un proyecto en producción

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

Page 16: Ramas con git: Aplicación a un proyecto en producción

DEMO

Page 17: Ramas con git: Aplicación a un proyecto en producción

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

Page 18: Ramas con git: Aplicación a un proyecto en producción

DEMO

Page 19: Ramas con git: Aplicación a un proyecto en producción

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

Page 20: Ramas con git: Aplicación a un proyecto en producción
Page 21: Ramas con git: Aplicación a un proyecto en producción

GRACIASIVÁN LÓPEZ@ILOPMAR