cas 2011 integración continua vs controlada

Post on 24-May-2015

3.682 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Integración continua vs controlada. Los pros y contras de por qué usar CI y por qué "feature branches" (branch per task) es el futuro de la integración continua. Presentada en CAS2011 en Castellón.

TRANSCRIPT

Integración continua vs controlada

pablo santos luaces

@psluaces

@plasticscm

Sobre mi• Plastic SCM - founder• Coder• Blog writer… (a ratos) ;)

@psluaces

En el show de hoy…• La guerra de la integración

• Qué método es más «agile»?

Hay una guerra ahí fuera

Y hay que elegir un bando

Una guerra ahí fuera

Una guerra … de bandos… ;)

De opciones

Las opciones son• Integración continua

• Integración controlada

Las opciones son• Integración continua (piedra angular de agile)

• Integración controlada

Las opciones son• Integración continua != integración constante (!)

• Integración controlada

Pero antes un paso atrás…

SCM es importante en «agile» porque:• Collective code ownership• Continuous Integration• Mapeo entre tareas y código• Coordinación del equipo

Qué es «mainline» development?• Trabajar en una única rama…

Qué es «mainline» development?• Trabajar en una única rama…

• ¿Es bueno?

Qué es «mainline» development?• Trabajar en una única rama…

• ¿Es bueno?

• Sí, si no hay otra opción … :P

¿Cómo reconocer «mainline»?• Fácil… sólo hay una rama…

0

¿Cómo reconocer «mainline»?• Fácil… sólo hay una rama…

¿Cómo reconocer «mainline»?• Fácil… sólo hay una rama…

¿Cómo reconocer «mainline»?• Fácil… sólo hay una rama…

¿Cómo reconocer «mainline»?• Fácil… sólo hay una rama…

¿Cómo reconocer «mainline»?• Si tu desarrollo tiene esta pinta… es lineal,

mainline, no paralelo!

Esto es desarrollo lineal

Y esto es desarrollo paralelo

Si no hay ramas… no es paralelo

Refuerzo positivo…

La batalla entre diferentes visiones

De dónde viene todo esto?

Ventajas del desarrollo paralelo• Romper la dependencia de tareas

Ventajas del desarrollo paralelo• Romper la dependencia de tareas

Ventajas del desarrollo paralelo• Puntos de partida conocidos – do not shoot a moving target!!!

Ventajas del desarrollo paralelo• Puntos de partida conocidos

Ventajas del desarrollo paralelo• Reforzar la creación de baselines estables

Ventajas del desarrollo paralelo• Código siempre bajo control

Ventajas del desarrollo paralelo• Detener la «bug spreading»

Ventajas del desarrollo paralelo• Detener la «bug spreading»

Ventajas del desarrollo paralelo• Trazabilidad mejorada

Ventajas del desarrollo paralelo• Keep the mainline … pristine

Integración continua – mainline glorificado

• The «poorman’s approach»

Refuerzo positivo…

Lo opuesto solía ser «big bang»

Lo opuesto solía ser «big bang»

Y para arreglarlo, integración frecuente

El futuro de CI• How can builds get faster?

• How can broken builds be prevented?

http://codicesoftware.blogspot.com/2008/03/continuous-integration-future.html

El futuro de CI

El futuro de CI

Feature branches

¿Qué es una tarea?• ¿Usáis un issue tracker?• Cada entrada en el issue tracker

Nota: las tareas son cortas…http://www.plasticscm.com/infocenter/quick-start/intro-task-driven-development.aspx

Integración controlada

http://drdobbs.com/architecture-and-design/205917960

main line

task 1140

task 1120

task 1121

baseline

Developer

baseline

Developer

task 1129

rebased

ReleaseEngineer

ReleaseEngineer

Integration Server For each taskto check whether it isvalid or not

Alternativas de integración

• El integrador hace merge• El integrador ejecuta tests• El integrador empaqueta y etiqueta

main line

task 1140

task 1120

task 1121

baseline

Developer

baseline

Developer

task 1129

rebased

ReleaseEngineer

Integration Server

Integration is just labelling and packing and running specific integration tests

Alternativas• Los desarrolladores hacen merge y ejecutan tests• El integrador empaqueta y etiqueta…• Evita mini-big-bangs• Recorta tiempos de compilación

main line

task 1140

task 1120

task 1121

baseline

Developer

baseline

Developer

task 1129

rebased

ReleaseEngineer

Integration Server

Integration is just promoting, labelling and packing and running specific integration tests

integration linePr

omot

e to

the

mai

nlin

e

Alternativas de integración

• Desarrolladores hacen merge y ejecutan tests• La línea principal se mantiene limpia

En el mundo distribuido – integration manager workflow

1. The project maintainer pushes to their public repository.

2. A contributor clones that repository and makes changes.

3. The contributor pushes to their own public copy.

4. The contributor sends the maintainer an e-mail asking them to pull changes.

5. The maintainer adds the contributor’s repo as a remote and merges locally.

6. The maintainer pushes merged changes to the main repository.

Dictator…

1. Regular developers work on their topic branch and rebase their work on top of master. The master branch is that of the dictator.

2. Lieutenants merge the developers’ topic branches into their master branch.

3. The dictator merges the lieutenants’ master branches into the dictator’s master branch.

4. The dictator pushes their master to the reference repository so the other developers can rebase on it.

Distributed branch per task

Conclusión - Alternativas

Conclusión – Que no te limite

tu SCM

pablo santos luaces@psluaces

@plasticscm

top related