A [git] workflow

Preview:

DESCRIPTION

Charla de Enero 2011 en Madrid-rbhttps://madridrb.jottit.com/enero_2011

Citation preview

Continuous Delivery that doesn't hurt

madrid-rb@madridrb

Sergio Gil@porras

A [git] workflow

DISCLAIMER I

Esto va más de workflow que de git. Aceptamos mercurial como animal de compañía

DISCLAIMER II + RETO

Intentar no citar explicitamente un comando de git en toda la charla

http://gitimmersion.com/

yo / nosotros

Hacemos productos

Hacemos productosy los productos duran para siempre

Nuestros productos son complejos

Nuestros productos son complejos

Nos encanta el TDD

Nuestros productos son complejos

Nos encanta el TDDNos encanta el feedback temprano

Nuestros productos son complejos

Nos encanta el TDDNos encanta el feedback temprano

Siempre probamos en un entorno de staging

“Máquina de convertir café

en código”

“Máquina de convertir café

en código”hamburguesas

“Máquina de convertir café

en código”features

hamburguesas

“Máquina de convertir café

en código”featuresútiles

hamburguesas

“Máquina de convertir café

en código”featuresútiles

en producción

hamburguesas

“Máquina de convertir café

en código”featuresútiles

en producción

hamburguesas

idea implícita: tiempo

T

U

Feature A en una semana

Feature A en un mes

Featu

re A

hoy

Featu

re A

en 1

mes

Feature A hoy

Feature A hoy

Feature A + B en un mes

Feature A hoy

Feature A + B en un mes

Feature A hoy + Feature B en un mes

KANBAN

WIP (≤ X)

master

Feature A Task 1/3

master

Feature A Task 1/3

Feature B Task 1/2

master

Feature A Task 1/3

Feature B Task 1/2

Feature A Task 2/3

master

Feature A Task 1/3

Feature B Task 1/2

Feature A Task 2/3

Feature B Task 2/2

master

Feature A Task 1/3

Feature B Task 1/2

Feature A Task 2/3

Feature B Task 2/2B ya está, ¡a desplegar!

master

Feature A Task 1/3

Feature B Task 1/2

Feature A Task 2/3

Feature B Task 2/2B ya está, ¡a desplegar!

¡NEGATIVO, Señor!A no está lista

master

Problema del despliegue retrasado que retrasa el despliegue

Problema del despliegue retrasado que retrasa el despliegue

o

Problema del despliegue retrasado que retrasa el despliegue

oEspiral de mierda

Si mientras esperamos que A esté lista empezamos C, ¡el problema

puede durar para siempre!

Problema del despliegue retrasado que retrasa el despliegue

oEspiral de mierda

¡OK, usemos ramas!

master

master

feat_a

master

feat_afeat_b

master

feat_afeat_b

master

feat_afeat_b

master

feat_afeat_b

➜ staging

master

feat_afeat_b

➜ staging OK

master

feat_afeat_b

➜ staging OK ➜ producción

master

feat_afeat_b

➜ staging OK ➜ producción

master

feat_afeat_b

➜ staging OK ➜ producción

master

feat_afeat_b

➜ staging OK

➜ staging

➜ producción

master

feat_afeat_b

➜ staging OK

➜ staging OK

➜ producción

master

feat_afeat_b

➜ staging OK

➜ staging OK

➜ producción

➜ producción

master

master

feat_a

master

feat_afeat_b

master

feat_afeat_b

master

feat_afeat_b

master

feat_afeat_b

➜ staging

master

feat_afeat_b

➜ staging FAIL

master

feat_afeat_b

➜ staging FAIL

master

feat_afeat_b

➜ staging FAIL

master

feat_afeat_b

➜ staging FAIL

master

feat_afeat_b

➜ staging FAIL

➜ staging

master

feat_afeat_b

➜ staging FAIL

➜ staging OK

master

feat_afeat_b

➜ staging FAIL

➜ staging OK ➜ producción

master

feat_afeat_b

➜ staging FAIL

➜ staging OK ➜ producción

¡NO!

master

feat_afeat_b

➜ staging FAIL

➜ staging OK ➜ producción

¡NO! la feature A está rota

stablemaster

stable

feat_a

master

stable

feat_afeat_b

master

stable

feat_afeat_b

master

stable

feat_afeat_b

master

stable

feat_afeat_b

➜ staging

master

stable

feat_afeat_b

➜ staging

master

FAIL

stable

feat_afeat_b

➜ staging

master

FAIL

stable

feat_afeat_b

➜ staging

master

FAIL

stable

feat_afeat_b

➜ staging

➜ staging

master

FAIL

stable

feat_afeat_b

➜ staging

➜ stagingOK

master

FAIL

stable

feat_afeat_b

➜ staging

➜ stagingOK

master

FAIL

stable

feat_afeat_b

➜ staging

➜ stagingOK

➜ producción

master

FAIL

stable

feat_afeat_b

➜ staging

➜ stagingOK

➜ producción

master

FAIL

feat_c

stable

feat_afeat_b

➜ staging

➜ stagingOK

➜ producción

master

FAIL

feat_c

stable

feat_afeat_b

➜ staging

➜ stagingOK

➜ producción

master

FAIL

feat_c

stable

feat_afeat_b

➜ staging

➜ stagingOK

➜ producción

master

FAIL

➜ staging

feat_c

stable

feat_afeat_b

➜ staging

➜ stagingOK

➜ producción

master

FAIL

➜ stagingOK

feat_c

stable

feat_afeat_b

➜ staging

➜ stagingOK

➜ producción

master

FAIL

➜ stagingOK

feat_c

stable

feat_afeat_b

➜ staging

➜ stagingOK

➜ producción

➜ producción

master

FAIL

➜ stagingOK

feat_c

BONUS POINTS & PRO TIPS

BONUS POINTS & PRO TIPS

recuerda publicar topic branches

BONUS POINTS & PRO TIPS

recuerda publicar topic branchestaguea tus releases

BONUS POINTS & PRO TIPS

recuerda publicar topic branchestaguea tus releases

rebasa tus ramas privadas sobre stable

BONUS POINTS & PRO TIPS

recuerda publicar topic branchestaguea tus releases

rebasa tus ramas privadas sobre stablenunca rebases o enmiendes commits publicados

BONUS POINTS & PRO TIPS

recuerda publicar topic branchestaguea tus releases

rebasa tus ramas privadas sobre stablenunca rebases o enmiendes commits publicados

--no-ff para una historia detallada

BONUS POINTS & PRO TIPS

recuerda publicar topic branchestaguea tus releases

rebasa tus ramas privadas sobre stablenunca rebases o enmiendes commits publicados

--no-ff para una historia detalladareset: corte por donde tenga que cortar

PROBLEMAS

PROBLEMAS

A veces la integración da trabajo

PROBLEMAS

Escala mal tanto en horizontal como en vertical

A veces la integración da trabajo

PROBLEMAS

Escala mal tanto en horizontal como en vertical

A veces la integración da trabajo

WIN

gracias

madrid-rb@madridrb

Sergio Gil@porras

Recommended