integracion continua - uniandesisis... · integracion continua material preparado por rubby...

Post on 05-Aug-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Integracion Continua

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co

Departamento de Sistemas y Computación

Universidad de los Andes, Bogotá

http://www.martinfowler

.com/articles/continuou

sIntegration.html (10

September

2000: Original version

published.)

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co 2

Contexto y problemas

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co 3

Contexto:

Proyectos grandes

(cientos, miles,

millones, .. ) de líneas

de código

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co 4

Contexto:

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co

Grupos de trabajo de

varios desarrolladores

(5, 10, 30, …)

5

Cambios constantes

Alta presión

Contexto:

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co 6

Qué es “Integración” ?

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co

División del trabajo,

usualmente grupos

distintos

7

Qué es “Integración” ?

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co

Cada grupo

produce una

“pieza” distinta

8

Qué es “Integración” ?

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co

Juntar las “piezas”

par que todo encaje

y funcione.

9

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

rcasalla@uniandes.edu.co 10

Qué sucede si el proceso de

desarrollo está separado del de

integración?

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co 11

Se puede descubrir

tardíamente problemas de

entendimiento de los

requerimientos, la

arquitectura, …

…. “los pedazos no

pegan”

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co

Cliente o UsuarioDesarrollador

12

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co

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

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

rcasalla@uniandes.edu.co 14

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

rcasalla@uniandes.edu.co 15

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co

t0

Este equipo terminó una

pieza

16

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co

t1

Trae a su espacio de

trabajo la aplicación, la

integra y la prueba

localmente17

Material preparado por Rubby Casallas

rcasalla@uniandes.edu.co

t2 “commit” con la pieza

integrada y probada

18

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

rcasalla@uniandes.edu.co 19

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

rcasalla@uniandes.edu.co 20

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

rcasalla@uniandes.edu.co 21

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

rcasalla@uniandes.edu.co 22

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

rcasalla@uniandes.edu.co 23

top related