Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby...

23
Integracion Continua Material preparado por Rubby Casallas [email protected] Departamento de Sistemas y Computación Universidad de los Andes, Bogotá

Transcript of Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby...

Page 1: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Integracion Continua

Material preparado por Rubby Casallas

[email protected]

Departamento de Sistemas y Computación

Universidad de los Andes, Bogotá

Page 2: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

http://www.martinfowler

.com/articles/continuou

sIntegration.html (10

September

2000: Original version

published.)

Material preparado por Rubby Casallas

[email protected] 2

Page 3: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Contexto y problemas

Material preparado por Rubby Casallas

[email protected] 3

Page 4: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Contexto:

Proyectos grandes

(cientos, miles,

millones, .. ) de líneas

de código

Material preparado por Rubby Casallas

[email protected] 4

Page 5: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Contexto:

Material preparado por Rubby Casallas

[email protected]

Grupos de trabajo de

varios desarrolladores

(5, 10, 30, …)

5

Page 6: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Cambios constantes

Alta presión

Contexto:

Material preparado por Rubby Casallas

[email protected] 6

Page 7: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Qué es “Integración” ?

Material preparado por Rubby Casallas

[email protected]

División del trabajo,

usualmente grupos

distintos

7

Page 8: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Qué es “Integración” ?

Material preparado por Rubby Casallas

[email protected]

Cada grupo

produce una

“pieza” distinta

8

Page 9: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Qué es “Integración” ?

Material preparado por Rubby Casallas

[email protected]

Juntar las “piezas”

par que todo encaje

y funcione.

9

Page 10: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Proceso de integración puede

ser muy largo e impredecible

(“Integration Hell”):

Cuándo termina?

Cuánto falta?

Cuál es la calidad del resultado?

Material preparado por Rubby Casallas

[email protected] 10

Page 11: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Qué sucede si el proceso de

desarrollo está separado del de

integración?

Material preparado por Rubby Casallas

[email protected] 11

Page 12: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Se puede descubrir

tardíamente problemas de

entendimiento de los

requerimientos, la

arquitectura, …

…. “los pedazos no

pegan”

Material preparado por Rubby Casallas

[email protected]

Cliente o UsuarioDesarrollador

12

Page 13: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Material preparado por Rubby Casallas

[email protected]

Correcciones en esta

etapa, sobre problemas

introducidos en etapas

anteriores, son más costos

de corregir y puede crear

nuevos problemas

Desarrollador Cliente o Usuario

$$

13

Page 14: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

La calidad del software

es difícil de asegurar

Las pruebas se ven

comprometidas porque

aparecen muy tarde en

el desarrollo

Material preparado por Rubby Casallas

[email protected] 14

Page 15: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Integración Continua: los comienzos

… Es una práctica que nació con eXtreme

Programming

Inicialmente se quería usarlo en combinación

con las pruebas unitarias automáticas:

Antes de hacer commit sobre la rama principal del

proyecto, todas las pruebas deberían ser exitosas

El objetivo era evitar que el trabajo de algún “en-

progreso” desarrollador dañara lo de otro

Material preparado por Rubby Casallas

[email protected] 15

Page 16: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Material preparado por Rubby Casallas

[email protected]

t0

Este equipo terminó una

pieza

16

Page 17: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Material preparado por Rubby Casallas

[email protected]

t1

Trae a su espacio de

trabajo la aplicación, la

integra y la prueba

localmente17

Page 18: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Material preparado por Rubby Casallas

[email protected]

t2 “commit” con la pieza

integrada y probada

18

Page 19: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

IC: Prácticas

1. Utilizar un depósito para el código central

para los artefactos del proyecto

2. Automatizar la construcción del ejecutable

(el “build”)

3. Construir el ejecutable y luego hacer que se

pruebe automáticamente

4. Cada integrante hace commit cada día

5. Cada commit debe producir un nuevo build

y un proceso de pruebasMaterial preparado por Rubby Casallas

[email protected] 19

Page 20: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

IC: Prácticas (cont.)

6. Probar en un clone del ambiente de

producción

7. Hacer fácil la obtención de los últimos

entregables

8. Cada uno puede ver los resultados del

último build

9. Automatizar el despliegue

Material preparado por Rubby Casallas

[email protected] 20

Page 21: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Principios Herramientas

Utilizar un depósito central para el código

del proyecto

CVS, SVN, ClearCase, Control de

versiones de Team Foundation (TFVC),

Git,…

Automatizar (el “build”) la construcción del

ejecutable

make, ant, gradle, Nmaven, nuget,

maven,..

Hacer un build que se pruebe de forma

automática

Arquilian, glassfish embebido, ..

Cada commit debe producir un nuevo

build y un proceso de pruebas

Hudson, Jenkis, Team Foundation Server

Cada uno puede ver los resultados del

último build

Hudson, Sonar, Jenkis, ..

Material preparado por Rubby Casallas

[email protected] 21

Page 22: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

IDE: Netbeans, Eclipse, Visual Studio

Git, SVN, CVS

Build

makers:

maven, ant

Build

makers:

maven, ant

Métricas de código:

Sonar, parasoft, jasca,…

Server de

IC:

Hudson,

jenkis,…

Tests: junit, arquilian, selenium, mockito,

podam, rest-assured,…

Deposito de

artefactos:

Nexus,

Artifact, ..

Hudson/Jen

kis, Sonar,

BugTracker:

Jira, mantis

Scripts sql,

podam

Sonar,

jcoverage

Material preparado por Rubby Casallas

[email protected] 22

Page 23: Integracion Continua - Uniandesisis... · Integracion Continua Material preparado por Rubby Casallas rcasalla@uniandes.edu.co Departamento de Sistemas y Computación Universidad de

Ambiente Local

Build

makers:

maven,

ant, make

Deposito de

artefactos:

Nexus,

Artifact,

maven

repository,

.. Tests: junit, arquilian, selenium, mockito,

podam, rest-assured,…

Material preparado por Rubby Casallas

[email protected] 23